Function useTokenManager

  • Type Parameters

    • T extends "ETH" | "ERC20" | "ERC721" | "ERC1155"

    Parameters

    • __namedParameters: TokenTypeProps<T>

    Returns {
        abi?: {
            COMMUNITY_LOCKER: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "bytes32";
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    indexed: false;
                    internalType: "address";
                    name: "user";
                    type: "address";
                }];
                name: "ActivateUser";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "constantHash";
                    type: "bytes32";
                }, {
                    indexed: false;
                    internalType: "uint256";
                    name: "previousValue";
                    type: "uint256";
                }, {
                    indexed: false;
                    internalType: "uint256";
                    name: "newValue";
                    type: "uint256";
                }];
                name: "ConstantUpdated";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "uint8";
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "bytes32";
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    indexed: false;
                    internalType: "address";
                    name: "user";
                    type: "address";
                }];
                name: "LockUser";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                inputs: readonly [];
                name: "CONSTANT_SETTER_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_HASH";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_NAME";
                outputs: readonly [{
                    internalType: "string";
                    name: "";
                    type: "string";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "activeUsers";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "receiver";
                    type: "address";
                }];
                name: "checkAllowedToSendMessage";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "communityPool";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "gasPriceTimestamp";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "uint256";
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "newSchainName";
                    type: "string";
                }, {
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxy";
                    type: "address";
                }, {
                    internalType: "contract ITokenManagerLinker";
                    name: "newTokenManagerLinker";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "newCommunityPool";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "initializeTimestamp";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "lastMessageTimeStamp";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "lastMessageTimeStampToSchain";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "mainnetGasPrice";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    internalType: "contract IMessageProxyForSchain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "fromChainHash";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }, {
                    internalType: "bytes";
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "schainHash";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "uint256";
                    name: "gasPrice";
                    type: "uint256";
                }, {
                    internalType: "uint256";
                    name: "timestamp";
                    type: "uint256";
                }, {
                    components: readonly [{
                        internalType: "uint256[2]";
                        name: "blsSignature";
                        type: "uint256[2]";
                    }, {
                        internalType: "uint256";
                        name: "hashA";
                        type: "uint256";
                    }, {
                        internalType: "uint256";
                        name: "hashB";
                        type: "uint256";
                    }, {
                        internalType: "uint256";
                        name: "counter";
                        type: "uint256";
                    }];
                    internalType: "struct IMessageProxy.Signature";
                    name: "";
                    type: "tuple";
                }];
                name: "setGasPrice";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "chainName";
                    type: "string";
                }, {
                    internalType: "uint256";
                    name: "newTimeLimitPerMessage";
                    type: "uint256";
                }];
                name: "setTimeLimitPerMessage";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes4";
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                name: "timeLimitPerMessage";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "tokenManagerLinker";
                outputs: readonly [{
                    internalType: "contract ITokenManagerLinker";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }];
            COMMUNITY_POOL: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "oldValue";
                    type: "uint256";
                }, {
                    indexed: false;
                    name: "newValue";
                    type: "uint256";
                }];
                name: "MinTransactionGasWasChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "oldMultiplierNumerator";
                    type: "uint256";
                }, {
                    indexed: false;
                    name: "oldMultiplierDivider";
                    type: "uint256";
                }, {
                    indexed: false;
                    name: "newMultiplierNumerator";
                    type: "uint256";
                }, {
                    indexed: false;
                    name: "newMultiplierDivider";
                    type: "uint256";
                }];
                name: "MultiplierWasChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                constant: true;
                inputs: readonly [];
                name: "CONSTANT_SETTER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "LINKER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "address";
                }, {
                    name: "";
                    type: "bytes32";
                }];
                name: "activeUsers";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "contractReceiver";
                    type: "address";
                }];
                name: "addSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "checkUserBalance";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "contractManagerOfSkaleManager";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "user";
                    type: "address";
                }, {
                    name: "schainName";
                    type: "string";
                }];
                name: "getBalance";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "getRecommendedRechargeAmount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "hasSchainContract";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "newMessageProxy";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "linker";
                    type: "address";
                }, {
                    name: "messageProxyValue";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newContractManagerOfSkaleManager";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }];
                name: "isAgentAuthorized";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "sender";
                    type: "address";
                }, {
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "isSchainOwner";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "minTransactionGas";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "multiplierDivider";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "multiplierNumerator";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "user";
                    type: "address";
                }];
                name: "rechargeUserWallet";
                outputs: readonly [];
                payable: true;
                stateMutability: "payable";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "node";
                    type: "address";
                }, {
                    name: "gas";
                    type: "uint256";
                }];
                name: "refundGasBySchainWallet";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "node";
                    type: "address";
                }, {
                    name: "user";
                    type: "address";
                }, {
                    name: "gas";
                    type: "uint256";
                }];
                name: "refundGasByUser";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "removeSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "schainLinks";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newMinTransactionGas";
                    type: "uint256";
                }];
                name: "setMinTransactionGas";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newMultiplierNumerator";
                    type: "uint256";
                }, {
                    name: "newMultiplierDivider";
                    type: "uint256";
                }];
                name: "setMultiplier";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "amount";
                    type: "uint256";
                }];
                name: "withdrawFunds";
                outputs: readonly [];
                payable: false;
                type: "function";
            }];
            CONFIG_CONTROLLER: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "DEPLOYER_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "DEPLOYER_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MTM_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "addr";
                    type: "address";
                }];
                name: "addToWhitelist";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "disableFreeContractDeployment";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "disableMTM";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "enableFreeContractDeployment";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "enableMTM";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "uint256";
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "addr";
                    type: "address";
                }];
                name: "isAddressWhitelisted";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "isFCDEnabled";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "isMTMEnabled";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "addr";
                    type: "address";
                }];
                name: "removeFromWhitelist";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "_version";
                    type: "string";
                }];
                name: "setVersion";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes4";
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "version";
                outputs: readonly [{
                    internalType: "string";
                    name: "";
                    type: "string";
                }];
                stateMutability: "view";
                type: "function";
            }];
            DEPOSIT_BOX_ERC1155: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "schainName";
                    type: "string";
                }, {
                    indexed: true;
                    name: "contractOnMainnet";
                    type: "address";
                }];
                name: "ERC1155TokenAdded";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    indexed: false;
                    name: "ids";
                    type: "uint256[]";
                }, {
                    indexed: false;
                    name: "amounts";
                    type: "uint256[]";
                }];
                name: "ERC1155TokenReady";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEPOSIT_BOX_MANAGER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "LINKER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc1155OnMainnet";
                    type: "address";
                }];
                name: "addERC1155TokenByOwner";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "contractReceiver";
                    type: "address";
                }];
                name: "addSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "contractManagerOfSkaleManager";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc1155OnMainnet";
                    type: "address";
                }, {
                    name: "id";
                    type: "uint256";
                }, {
                    name: "amount";
                    type: "uint256";
                }];
                name: "depositERC1155";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc1155OnMainnet";
                    type: "address";
                }, {
                    name: "ids";
                    type: "uint256[]";
                }, {
                    name: "amounts";
                    type: "uint256[]";
                }];
                name: "depositERC1155Batch";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc1155OnMainnet";
                    type: "address";
                }, {
                    name: "ids";
                    type: "uint256[]";
                }, {
                    name: "amounts";
                    type: "uint256[]";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "depositERC1155BatchDirect";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc1155OnMainnet";
                    type: "address";
                }, {
                    name: "id";
                    type: "uint256";
                }, {
                    name: "amount";
                    type: "uint256";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "depositERC1155Direct";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "disableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "enableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "gasPayer";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc1155OnMainnet";
                    type: "address";
                }, {
                    name: "receiver";
                    type: "address";
                }, {
                    name: "ids";
                    type: "uint256[]";
                }, {
                    name: "amounts";
                    type: "uint256[]";
                }];
                name: "getFunds";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "from";
                    type: "uint256";
                }, {
                    name: "to";
                    type: "uint256";
                }];
                name: "getSchainToAllERC1155";
                outputs: readonly [{
                    name: "tokensInRange";
                    type: "address[]";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "getSchainToAllERC1155Length";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc1155OnMainnet";
                    type: "address";
                }];
                name: "getSchainToERC1155";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "hasSchainContract";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "newMessageProxy";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "linkerValue";
                    type: "address";
                }, {
                    name: "messageProxyValue";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newContractManagerOfSkaleManager";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }];
                name: "isAgentAuthorized";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "sender";
                    type: "address";
                }, {
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "isSchainOwner";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "isWhitelisted";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "linker";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "operator";
                    type: "address";
                }, {
                    name: "";
                    type: "address";
                }, {
                    name: "";
                    type: "uint256[]";
                }, {
                    name: "";
                    type: "uint256[]";
                }, {
                    name: "";
                    type: "bytes";
                }];
                name: "onERC1155BatchReceived";
                outputs: readonly [{
                    name: "";
                    type: "bytes4";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "operator";
                    type: "address";
                }, {
                    name: "";
                    type: "address";
                }, {
                    name: "";
                    type: "uint256";
                }, {
                    name: "";
                    type: "uint256";
                }, {
                    name: "";
                    type: "bytes";
                }];
                name: "onERC1155Received";
                outputs: readonly [{
                    name: "";
                    type: "bytes4";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "removeSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "schainLinks";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }, {
                    name: "";
                    type: "address";
                }, {
                    name: "";
                    type: "uint256";
                }];
                name: "transferredAmount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }];
            DEPOSIT_BOX_ERC20: readonly [{
                inputs: readonly [];
                name: "Empty";
                type: "error";
            }, {
                inputs: readonly [];
                name: "OutOfBounds";
                type: "error";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    indexed: false;
                    name: "oldValue";
                    type: "uint256";
                }, {
                    indexed: false;
                    name: "newValue";
                    type: "uint256";
                }];
                name: "ArbitrageDurationIsChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    indexed: false;
                    name: "oldValue";
                    type: "uint256";
                }, {
                    indexed: false;
                    name: "newValue";
                    type: "uint256";
                }];
                name: "BigTransferDelayIsChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "token";
                    type: "address";
                }, {
                    indexed: false;
                    name: "oldValue";
                    type: "uint256";
                }, {
                    indexed: false;
                    name: "newValue";
                    type: "uint256";
                }];
                name: "BigTransferThresholdIsChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "schainName";
                    type: "string";
                }, {
                    indexed: true;
                    name: "contractOnMainnet";
                    type: "address";
                }];
                name: "ERC20TokenAdded";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    indexed: false;
                    name: "amount";
                    type: "uint256";
                }];
                name: "ERC20TokenReady";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "id";
                    type: "uint256";
                }];
                name: "Escalated";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "id";
                    type: "uint256";
                }, {
                    indexed: false;
                    name: "receiver";
                    type: "address";
                }, {
                    indexed: false;
                    name: "token";
                    type: "address";
                }, {
                    indexed: false;
                    name: "amount";
                    type: "uint256";
                }];
                name: "TransferDelayed";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "id";
                    type: "uint256";
                }];
                name: "TransferSkipped";
                type: "event";
            }, {
                constant: true;
                inputs: readonly [];
                name: "ARBITER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEPOSIT_BOX_MANAGER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "LINKER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc20OnMainnet";
                    type: "address";
                }];
                name: "addERC20TokenByOwner";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "contractReceiver";
                    type: "address";
                }];
                name: "addSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "contractManagerOfSkaleManager";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                name: "delayedTransfers";
                outputs: readonly [{
                    name: "receiver";
                    type: "address";
                }, {
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "token";
                    type: "address";
                }, {
                    name: "amount";
                    type: "uint256";
                }, {
                    name: "untilTimestamp";
                    type: "uint256";
                }, {
                    name: "status";
                    type: "uint8";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "address";
                }];
                name: "delayedTransfersByReceiver";
                outputs: readonly [{
                    name: "_begin";
                    type: "int128";
                }, {
                    name: "_end";
                    type: "int128";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "delayedTransfersSize";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc20OnMainnet";
                    type: "address";
                }, {
                    name: "amount";
                    type: "uint256";
                }];
                name: "depositERC20";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc20OnMainnet";
                    type: "address";
                }, {
                    name: "amount";
                    type: "uint256";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "depositERC20Direct";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "disableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "token";
                    type: "address";
                }, {
                    name: "receiver";
                    type: "address";
                }, {
                    name: "amount";
                    type: "uint256";
                }];
                name: "doTransfer";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "enableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "transferId";
                    type: "uint256";
                }];
                name: "escalate";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "gasPayer";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "getArbitrageDuration";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "token";
                    type: "address";
                }];
                name: "getBigTransferThreshold";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "receiver";
                    type: "address";
                }, {
                    name: "token";
                    type: "address";
                }];
                name: "getDelayedAmount";
                outputs: readonly [{
                    name: "value";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc20OnMainnet";
                    type: "address";
                }, {
                    name: "receiver";
                    type: "address";
                }, {
                    name: "amount";
                    type: "uint256";
                }];
                name: "getFunds";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "receiver";
                    type: "address";
                }, {
                    name: "token";
                    type: "address";
                }];
                name: "getNextUnlockTimestamp";
                outputs: readonly [{
                    name: "unlockTimestamp";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "from";
                    type: "uint256";
                }, {
                    name: "to";
                    type: "uint256";
                }];
                name: "getSchainToAllERC20";
                outputs: readonly [{
                    name: "tokensInRange";
                    type: "address[]";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "getSchainToAllERC20Length";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc20OnMainnet";
                    type: "address";
                }];
                name: "getSchainToERC20";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "getTimeDelay";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "index";
                    type: "uint256";
                }];
                name: "getTrustedReceiver";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "getTrustedReceiversAmount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "hasSchainContract";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "newMessageProxy";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "linkerValue";
                    type: "address";
                }, {
                    name: "messageProxyValue";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newContractManagerOfSkaleManager";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }];
                name: "isAgentAuthorized";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "isReceiverTrusted";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "sender";
                    type: "address";
                }, {
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "isSchainOwner";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "isWhitelisted";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "linker";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "transferId";
                    type: "uint256";
                }];
                name: "rejectTransfer";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "removeSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [];
                name: "retrieve";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "receiver";
                    type: "address";
                }];
                name: "retrieveFor";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "schainLinks";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "delayInSeconds";
                    type: "uint256";
                }];
                name: "setArbitrageDuration";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "delayInSeconds";
                    type: "uint256";
                }];
                name: "setBigTransferDelay";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "token";
                    type: "address";
                }, {
                    name: "value";
                    type: "uint256";
                }];
                name: "setBigTransferValue";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "stopTrustingReceiver";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }, {
                    name: "";
                    type: "address";
                }];
                name: "transferredAmount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "trustReceiver";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "transferId";
                    type: "uint256";
                }];
                name: "validateTransfer";
                outputs: readonly [];
                payable: false;
                type: "function";
            }];
            DEPOSIT_BOX_ERC721: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "schainName";
                    type: "string";
                }, {
                    indexed: true;
                    name: "contractOnMainnet";
                    type: "address";
                }];
                name: "ERC721TokenAdded";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    indexed: false;
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "ERC721TokenReady";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEPOSIT_BOX_MANAGER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "LINKER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }];
                name: "addERC721TokenByOwner";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "contractReceiver";
                    type: "address";
                }];
                name: "addSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "contractManagerOfSkaleManager";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }, {
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "depositERC721";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }, {
                    name: "tokenId";
                    type: "uint256";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "depositERC721Direct";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "disableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "enableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "gasPayer";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }, {
                    name: "receiver";
                    type: "address";
                }, {
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "getFunds";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "from";
                    type: "uint256";
                }, {
                    name: "to";
                    type: "uint256";
                }];
                name: "getSchainToAllERC721";
                outputs: readonly [{
                    name: "tokensInRange";
                    type: "address[]";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "getSchainToAllERC721Length";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }];
                name: "getSchainToERC721";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "hasSchainContract";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "newMessageProxy";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "linkerValue";
                    type: "address";
                }, {
                    name: "messageProxyValue";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newContractManagerOfSkaleManager";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }];
                name: "isAgentAuthorized";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "sender";
                    type: "address";
                }, {
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "isSchainOwner";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "isWhitelisted";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "linker";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "removeSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "schainLinks";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "address";
                }, {
                    name: "";
                    type: "uint256";
                }];
                name: "transferredAmount";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }];
            DEPOSIT_BOX_ERC721_WITH_METADATA: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "schainName";
                    type: "string";
                }, {
                    indexed: true;
                    name: "contractOnMainnet";
                    type: "address";
                }];
                name: "ERC721TokenAdded";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    indexed: false;
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "ERC721TokenReady";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEPOSIT_BOX_MANAGER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "LINKER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }];
                name: "addERC721TokenByOwner";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "contractReceiver";
                    type: "address";
                }];
                name: "addSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "contractManagerOfSkaleManager";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }, {
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "depositERC721";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }, {
                    name: "tokenId";
                    type: "uint256";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "depositERC721Direct";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "disableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "enableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "gasPayer";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }, {
                    name: "receiver";
                    type: "address";
                }, {
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "getFunds";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "from";
                    type: "uint256";
                }, {
                    name: "to";
                    type: "uint256";
                }];
                name: "getSchainToAllERC721";
                outputs: readonly [{
                    name: "tokensInRange";
                    type: "address[]";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "getSchainToAllERC721Length";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }];
                name: "getSchainToERC721";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "hasSchainContract";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "newMessageProxy";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "linkerValue";
                    type: "address";
                }, {
                    name: "messageProxyValue";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newContractManagerOfSkaleManager";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }];
                name: "isAgentAuthorized";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "sender";
                    type: "address";
                }, {
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "isSchainOwner";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "isWhitelisted";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "linker";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "removeSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "schainLinks";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "address";
                }, {
                    name: "";
                    type: "uint256";
                }];
                name: "transferredAmount";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }];
            DEPOSIT_BOX_ETH: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    indexed: false;
                    name: "active";
                    type: "bool";
                }];
                name: "ActiveEthTransfers";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEPOSIT_BOX_MANAGER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "LINKER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "activeEthTransfers";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "contractReceiver";
                    type: "address";
                }];
                name: "addSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "address";
                }];
                name: "approveTransfers";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "contractManagerOfSkaleManager";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "deposit";
                outputs: readonly [];
                payable: true;
                stateMutability: "payable";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "depositDirect";
                outputs: readonly [];
                payable: true;
                stateMutability: "payable";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "disableActiveEthTransfers";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "disableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "enableActiveEthTransfers";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "enableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "gasPayer";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "receiver";
                    type: "address";
                }, {
                    name: "amount";
                    type: "uint256";
                }];
                name: "getFunds";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [];
                name: "getMyEth";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "hasSchainContract";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "newMessageProxy";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "linkerValue";
                    type: "address";
                }, {
                    name: "messageProxyValue";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newContractManagerOfSkaleManager";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }];
                name: "isAgentAuthorized";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "sender";
                    type: "address";
                }, {
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "isSchainOwner";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "isWhitelisted";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "linker";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "removeSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "schainLinks";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "transferredAmount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }];
            FILESTORAGE: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                inputs: readonly [];
                name: "ALLOCATOR_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "EMPTY_INDEX";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAX_BLOCK_COUNT";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAX_FILESIZE";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MEGABYTE";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "STORAGE_SPACE_SLOT";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "uint256";
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes4";
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "userAddress";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "reservedSpace";
                    type: "uint256";
                }];
                name: "reserveSpace";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "directoryPath";
                    type: "string";
                }];
                name: "createDirectory";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "directoryPath";
                    type: "string";
                }];
                name: "deleteDirectory";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "filePath";
                    type: "string";
                }, {
                    internalType: "uint256";
                    name: "fileSize";
                    type: "uint256";
                }];
                name: "startUpload";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "filePath";
                    type: "string";
                }, {
                    internalType: "uint256";
                    name: "position";
                    type: "uint256";
                }, {
                    internalType: "bytes";
                    name: "data";
                    type: "bytes";
                }];
                name: "uploadChunk";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "filePath";
                    type: "string";
                }];
                name: "finishUpload";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "filePath";
                    type: "string";
                }];
                name: "deleteFile";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "storagePath";
                    type: "string";
                }, {
                    internalType: "uint256";
                    name: "position";
                    type: "uint256";
                }, {
                    internalType: "uint256";
                    name: "length";
                    type: "uint256";
                }];
                name: "readChunk";
                outputs: readonly [{
                    internalType: "bytes32[32768]";
                    name: "chunk";
                    type: "bytes32[32768]";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "storagePath";
                    type: "string";
                }];
                name: "listDirectory";
                outputs: readonly [{
                    components: readonly [{
                        internalType: "string";
                        name: "name";
                        type: "string";
                    }, {
                        internalType: "bool";
                        name: "isFile";
                        type: "bool";
                    }, {
                        internalType: "uint256";
                        name: "size";
                        type: "uint256";
                    }, {
                        internalType: "enum FileStorage.FileStatus";
                        name: "status";
                        type: "uint8";
                    }, {
                        internalType: "bool[]";
                        name: "isChunkUploaded";
                        type: "bool[]";
                    }];
                    internalType: "struct FileStorage.ContentInfo[]";
                    name: "";
                    type: "tuple[]";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "storagePath";
                    type: "string";
                }];
                name: "getFileStatus";
                outputs: readonly [{
                    internalType: "enum FileStorage.FileStatus";
                    name: "";
                    type: "uint8";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "storagePath";
                    type: "string";
                }];
                name: "getFileSize";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "fileSize";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "getTotalStorageSpace";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "getTotalReservedSpace";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "owner";
                    type: "address";
                }];
                name: "getReservedSpace";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "owner";
                    type: "address";
                }];
                name: "getOccupiedSpace";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "getMaxContentCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "getMaxChunkSize";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }];
            LINKER: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "LINKER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "contractReceiver";
                    type: "address";
                }];
                name: "addSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "schainContracts";
                    type: "address[]";
                }];
                name: "connectSchain";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "contractManagerOfSkaleManager";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "disconnectSchain";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "mainnetContract";
                    type: "address";
                }];
                name: "hasMainnetContract";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "hasSchain";
                outputs: readonly [{
                    name: "connected";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "hasSchainContract";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "messageProxyValue";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newContractManagerOfSkaleManager";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }];
                name: "isAgentAuthorized";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "isNotKilled";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "sender";
                    type: "address";
                }, {
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "isSchainOwner";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "kill";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newMainnetContract";
                    type: "address";
                }];
                name: "registerMainnetContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "mainnetContract";
                    type: "address";
                }];
                name: "removeMainnetContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "removeSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "schainLinks";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "statuses";
                outputs: readonly [{
                    name: "";
                    type: "uint8";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }];
            MARIONETTE: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "uint256";
                    name: "amount";
                    type: "uint256";
                }];
                name: "EtherReceived";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "address";
                    name: "receiver";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "uint256";
                    name: "amount";
                    type: "uint256";
                }];
                name: "EtherSent";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "bytes";
                    name: "output";
                    type: "bytes";
                }];
                name: "FunctionCallResult";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "uint8";
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                inputs: readonly [];
                name: "ACCESS_VIOLATION";
                outputs: readonly [{
                    internalType: "string";
                    name: "";
                    type: "string";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "IMA_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "PUPPETEER_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "receiver";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "value";
                    type: "uint256";
                }, {
                    internalType: "bytes";
                    name: "data";
                    type: "bytes";
                }];
                name: "encodeFunctionCall";
                outputs: readonly [{
                    internalType: "bytes";
                    name: "";
                    type: "bytes";
                }];
                stateMutability: "pure";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address payable";
                    name: "target";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "value";
                    type: "uint256";
                }, {
                    internalType: "bytes";
                    name: "data";
                    type: "bytes";
                }];
                name: "execute";
                outputs: readonly [{
                    internalType: "bytes";
                    name: "";
                    type: "bytes";
                }];
                stateMutability: "payable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "uint256";
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "owner";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "ima";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }, {
                    internalType: "bytes";
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address payable";
                    name: "target";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "value";
                    type: "uint256";
                }];
                name: "sendSFuel";
                outputs: readonly [];
                stateMutability: "payable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes4";
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                stateMutability: "payable";
                type: "receive";
            }];
            MULTISIG_WALLET: readonly [{
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                name: "owners";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "owner";
                    type: "address";
                }];
                name: "removeOwner";
                outputs: readonly [];
                payable: false;
                stateMutability: "nonpayable";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "revokeConfirmation";
                outputs: readonly [];
                payable: false;
                stateMutability: "nonpayable";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "address";
                }];
                name: "isOwner";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "uint256";
                }, {
                    name: "";
                    type: "address";
                }];
                name: "confirmations";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "calcMaxWithdraw";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "pending";
                    type: "bool";
                }, {
                    name: "executed";
                    type: "bool";
                }];
                name: "getTransactionCount";
                outputs: readonly [{
                    name: "count";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "dailyLimit";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "lastDay";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "owner";
                    type: "address";
                }];
                name: "addOwner";
                outputs: readonly [];
                payable: false;
                stateMutability: "nonpayable";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "isConfirmed";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "getConfirmationCount";
                outputs: readonly [{
                    name: "count";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                name: "transactions";
                outputs: readonly [{
                    name: "destination";
                    type: "address";
                }, {
                    name: "value";
                    type: "uint256";
                }, {
                    name: "data";
                    type: "bytes";
                }, {
                    name: "executed";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "getOwners";
                outputs: readonly [{
                    name: "";
                    type: "address[]";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "from";
                    type: "uint256";
                }, {
                    name: "to";
                    type: "uint256";
                }, {
                    name: "pending";
                    type: "bool";
                }, {
                    name: "executed";
                    type: "bool";
                }];
                name: "getTransactionIds";
                outputs: readonly [{
                    name: "_transactionIds";
                    type: "uint256[]";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "getConfirmations";
                outputs: readonly [{
                    name: "_confirmations";
                    type: "address[]";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "transactionCount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "_required";
                    type: "uint256";
                }];
                name: "changeRequirement";
                outputs: readonly [];
                payable: false;
                stateMutability: "nonpayable";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "confirmTransaction";
                outputs: readonly [];
                payable: false;
                stateMutability: "nonpayable";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "destination";
                    type: "address";
                }, {
                    name: "value";
                    type: "uint256";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "submitTransaction";
                outputs: readonly [{
                    name: "transactionId";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "nonpayable";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "_dailyLimit";
                    type: "uint256";
                }];
                name: "changeDailyLimit";
                outputs: readonly [];
                payable: false;
                stateMutability: "nonpayable";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "MAX_OWNER_COUNT";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "required";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "owner";
                    type: "address";
                }, {
                    name: "newOwner";
                    type: "address";
                }];
                name: "replaceOwner";
                outputs: readonly [];
                payable: false;
                stateMutability: "nonpayable";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "executeTransaction";
                outputs: readonly [];
                payable: false;
                stateMutability: "nonpayable";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "spentToday";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    name: "_owners";
                    type: "address[]";
                }, {
                    name: "_required";
                    type: "uint256";
                }, {
                    name: "_dailyLimit";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "nonpayable";
                type: "constructor";
            }, {
                payable: true;
                stateMutability: "payable";
                type: "fallback";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "dailyLimit";
                    type: "uint256";
                }];
                name: "DailyLimitChange";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "sender";
                    type: "address";
                }, {
                    indexed: true;
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "Confirmation";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "sender";
                    type: "address";
                }, {
                    indexed: true;
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "Revocation";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "Submission";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "Execution";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "ExecutionFailure";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "sender";
                    type: "address";
                }, {
                    indexed: false;
                    name: "value";
                    type: "uint256";
                }];
                name: "Deposit";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "owner";
                    type: "address";
                }];
                name: "OwnerAddition";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "owner";
                    type: "address";
                }];
                name: "OwnerRemoval";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "required";
                    type: "uint256";
                }];
                name: "RequirementChange";
                type: "event";
            }];
            TOKEN_MANAGER_ERC1155: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "address";
                    name: "oldValue";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "address";
                    name: "newValue";
                    type: "address";
                }];
                name: "DepositBoxWasChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc1155OnMainnet";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc1155OnSchain";
                    type: "address";
                }];
                name: "ERC1155TokenAdded";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc1155OnMainnet";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc1155OnSchain";
                    type: "address";
                }];
                name: "ERC1155TokenCreated";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "uint256[]";
                    name: "ids";
                    type: "uint256[]";
                }, {
                    indexed: false;
                    internalType: "uint256[]";
                    name: "amounts";
                    type: "uint256[]";
                }];
                name: "ERC1155TokenReady";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc1155OnMainnet";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc1155OnSchain";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "uint256[]";
                    name: "ids";
                    type: "uint256[]";
                }, {
                    indexed: false;
                    internalType: "uint256[]";
                    name: "amounts";
                    type: "uint256[]";
                }];
                name: "ERC1155TokenReceived";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "uint8";
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                inputs: readonly [];
                name: "AUTOMATIC_DEPLOY_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_HASH";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_NAME";
                outputs: readonly [{
                    internalType: "string";
                    name: "";
                    type: "string";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "TOKEN_REGISTRAR_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "targetChainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "erc1155OnMainnet";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "erc1155OnSchain";
                    type: "address";
                }];
                name: "addERC1155TokenByOwner";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "newTokenManager";
                    type: "address";
                }];
                name: "addTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "contract ERC1155OnChain";
                    name: "";
                    type: "address";
                }];
                name: "addedClones";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "automaticDeploy";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "changeDepositBoxAddress";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "clonesErc1155";
                outputs: readonly [{
                    internalType: "contract ERC1155OnChain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "communityLocker";
                outputs: readonly [{
                    internalType: "contract ICommunityLocker";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "depositBox";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "deprecatedClonesErc1155";
                outputs: readonly [{
                    internalType: "contract ERC1155OnChain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "disableAutomaticDeploy";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "enableAutomaticDeploy";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "id";
                    type: "uint256";
                }, {
                    internalType: "uint256";
                    name: "amount";
                    type: "uint256";
                }];
                name: "exitToMainERC1155";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    internalType: "uint256[]";
                    name: "ids";
                    type: "uint256[]";
                }, {
                    internalType: "uint256[]";
                    name: "amounts";
                    type: "uint256[]";
                }];
                name: "exitToMainERC1155Batch";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "uint256";
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "hasTokenManager";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "newChainName";
                    type: "string";
                }, {
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxy";
                    type: "address";
                }, {
                    internalType: "contract ITokenManagerLinker";
                    name: "newIMALinker";
                    type: "address";
                }, {
                    internalType: "contract ICommunityLocker";
                    name: "newCommunityLocker";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "newSchainName";
                    type: "string";
                }, {
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxy";
                    type: "address";
                }, {
                    internalType: "contract ITokenManagerLinker";
                    name: "newIMALinker";
                    type: "address";
                }, {
                    internalType: "contract ICommunityLocker";
                    name: "newCommunityLocker";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "initializeTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    internalType: "contract IMessageProxyForSchain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "operator";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "";
                    type: "address";
                }, {
                    internalType: "uint256[]";
                    name: "";
                    type: "uint256[]";
                }, {
                    internalType: "uint256[]";
                    name: "";
                    type: "uint256[]";
                }, {
                    internalType: "bytes";
                    name: "";
                    type: "bytes";
                }];
                name: "onERC1155BatchReceived";
                outputs: readonly [{
                    internalType: "bytes4";
                    name: "";
                    type: "bytes4";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "operator";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }, {
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }, {
                    internalType: "bytes";
                    name: "";
                    type: "bytes";
                }];
                name: "onERC1155Received";
                outputs: readonly [{
                    internalType: "bytes4";
                    name: "";
                    type: "bytes4";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "fromChainHash";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }, {
                    internalType: "bytes";
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "removeTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "schainHash";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes4";
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "tokenManagerLinker";
                outputs: readonly [{
                    internalType: "contract ITokenManagerLinker";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                name: "tokenManagers";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "targetSchainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "id";
                    type: "uint256";
                }, {
                    internalType: "uint256";
                    name: "amount";
                    type: "uint256";
                }];
                name: "transferToSchainERC1155";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "targetSchainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    internalType: "uint256[]";
                    name: "ids";
                    type: "uint256[]";
                }, {
                    internalType: "uint256[]";
                    name: "amounts";
                    type: "uint256[]";
                }];
                name: "transferToSchainERC1155Batch";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                name: "transferredAmount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }];
            TOKEN_MANAGER_ERC20: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "address";
                    name: "oldValue";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "address";
                    name: "newValue";
                    type: "address";
                }];
                name: "DepositBoxWasChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc20OnMainChain";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc20OnSchain";
                    type: "address";
                }];
                name: "ERC20TokenAdded";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc20OnMainChain";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc20OnSchain";
                    type: "address";
                }];
                name: "ERC20TokenCreated";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "uint256";
                    name: "amount";
                    type: "uint256";
                }];
                name: "ERC20TokenReady";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc20OnMainChain";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc20OnSchain";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "uint256";
                    name: "amount";
                    type: "uint256";
                }];
                name: "ERC20TokenReceived";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "uint8";
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                inputs: readonly [];
                name: "AUTOMATIC_DEPLOY_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_HASH";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_NAME";
                outputs: readonly [{
                    internalType: "string";
                    name: "";
                    type: "string";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "TOKEN_REGISTRAR_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "targetChainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "erc20OnMainChain";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "erc20OnSchain";
                    type: "address";
                }];
                name: "addERC20TokenByOwner";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "newTokenManager";
                    type: "address";
                }];
                name: "addTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "contract ERC20OnChain";
                    name: "";
                    type: "address";
                }];
                name: "addedClones";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "automaticDeploy";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "changeDepositBoxAddress";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "clonesErc20";
                outputs: readonly [{
                    internalType: "contract ERC20OnChain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "communityLocker";
                outputs: readonly [{
                    internalType: "contract ICommunityLocker";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "depositBox";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "deprecatedClonesErc20";
                outputs: readonly [{
                    internalType: "contract ERC20OnChain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "disableAutomaticDeploy";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "enableAutomaticDeploy";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "amount";
                    type: "uint256";
                }];
                name: "exitToMainERC20";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "uint256";
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "hasTokenManager";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "newChainName";
                    type: "string";
                }, {
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxy";
                    type: "address";
                }, {
                    internalType: "contract ITokenManagerLinker";
                    name: "newIMALinker";
                    type: "address";
                }, {
                    internalType: "contract ICommunityLocker";
                    name: "newCommunityLocker";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "newSchainName";
                    type: "string";
                }, {
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxy";
                    type: "address";
                }, {
                    internalType: "contract ITokenManagerLinker";
                    name: "newIMALinker";
                    type: "address";
                }, {
                    internalType: "contract ICommunityLocker";
                    name: "newCommunityLocker";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "initializeTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    internalType: "contract IMessageProxyForSchain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "fromChainHash";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }, {
                    internalType: "bytes";
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "removeTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "schainHash";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes4";
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "tokenManagerLinker";
                outputs: readonly [{
                    internalType: "contract ITokenManagerLinker";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                name: "tokenManagers";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "contract IERC20Upgradeable";
                    name: "";
                    type: "address";
                }];
                name: "totalSupplyOnMainnet";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "targetSchainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "amount";
                    type: "uint256";
                }];
                name: "transferToSchainERC20";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "transferredAmount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }];
            TOKEN_MANAGER_ERC721: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "address";
                    name: "oldValue";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "address";
                    name: "newValue";
                    type: "address";
                }];
                name: "DepositBoxWasChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc721OnMainChain";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc721OnSchain";
                    type: "address";
                }];
                name: "ERC721TokenAdded";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc721OnMainChain";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc721OnSchain";
                    type: "address";
                }];
                name: "ERC721TokenCreated";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "uint256";
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "ERC721TokenReady";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc721OnMainChain";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc721OnSchain";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "uint256";
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "ERC721TokenReceived";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "uint8";
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                inputs: readonly [];
                name: "AUTOMATIC_DEPLOY_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_HASH";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_NAME";
                outputs: readonly [{
                    internalType: "string";
                    name: "";
                    type: "string";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "TOKEN_REGISTRAR_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "targetChainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "erc721OnMainChain";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "erc721OnSchain";
                    type: "address";
                }];
                name: "addERC721TokenByOwner";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "newTokenManager";
                    type: "address";
                }];
                name: "addTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "contract ERC721OnChain";
                    name: "";
                    type: "address";
                }];
                name: "addedClones";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "automaticDeploy";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "changeDepositBoxAddress";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "clonesErc721";
                outputs: readonly [{
                    internalType: "contract ERC721OnChain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "communityLocker";
                outputs: readonly [{
                    internalType: "contract ICommunityLocker";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "depositBox";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "deprecatedClonesErc721";
                outputs: readonly [{
                    internalType: "contract ERC721OnChain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "disableAutomaticDeploy";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "enableAutomaticDeploy";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "exitToMainERC721";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "uint256";
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "hasTokenManager";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "newChainName";
                    type: "string";
                }, {
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxy";
                    type: "address";
                }, {
                    internalType: "contract ITokenManagerLinker";
                    name: "newIMALinker";
                    type: "address";
                }, {
                    internalType: "contract ICommunityLocker";
                    name: "newCommunityLocker";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "newSchainName";
                    type: "string";
                }, {
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxy";
                    type: "address";
                }, {
                    internalType: "contract ITokenManagerLinker";
                    name: "newIMALinker";
                    type: "address";
                }, {
                    internalType: "contract ICommunityLocker";
                    name: "newCommunityLocker";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "initializeTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    internalType: "contract IMessageProxyForSchain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "fromChainHash";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }, {
                    internalType: "bytes";
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "removeTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "schainHash";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes4";
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "tokenManagerLinker";
                outputs: readonly [{
                    internalType: "contract ITokenManagerLinker";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                name: "tokenManagers";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "targetSchainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "transferToSchainERC721";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                name: "transferredAmount";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }];
            TOKEN_MANAGER_ETH: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "address";
                    name: "oldValue";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "address";
                    name: "newValue";
                    type: "address";
                }];
                name: "DepositBoxWasChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "uint8";
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                inputs: readonly [];
                name: "AUTOMATIC_DEPLOY_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_HASH";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_NAME";
                outputs: readonly [{
                    internalType: "string";
                    name: "";
                    type: "string";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "TOKEN_REGISTRAR_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "newTokenManager";
                    type: "address";
                }];
                name: "addTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "automaticDeploy";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "changeDepositBoxAddress";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "communityLocker";
                outputs: readonly [{
                    internalType: "contract ICommunityLocker";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "depositBox";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "disableAutomaticDeploy";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "enableAutomaticDeploy";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "ethErc20";
                outputs: readonly [{
                    internalType: "contract IEthErc20";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "uint256";
                    name: "amount";
                    type: "uint256";
                }];
                name: "exitToMain";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "uint256";
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "hasTokenManager";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "newChainName";
                    type: "string";
                }, {
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxy";
                    type: "address";
                }, {
                    internalType: "contract ITokenManagerLinker";
                    name: "newIMALinker";
                    type: "address";
                }, {
                    internalType: "contract ICommunityLocker";
                    name: "newCommunityLocker";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }, {
                    internalType: "contract IEthErc20";
                    name: "ethErc20Address";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "newSchainName";
                    type: "string";
                }, {
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxy";
                    type: "address";
                }, {
                    internalType: "contract ITokenManagerLinker";
                    name: "newIMALinker";
                    type: "address";
                }, {
                    internalType: "contract ICommunityLocker";
                    name: "newCommunityLocker";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "initializeTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    internalType: "contract IMessageProxyForSchain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "fromChainHash";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }, {
                    internalType: "bytes";
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "removeTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "schainHash";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "contract IEthErc20";
                    name: "newEthErc20Address";
                    type: "address";
                }];
                name: "setEthErc20Address";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes4";
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "tokenManagerLinker";
                outputs: readonly [{
                    internalType: "contract ITokenManagerLinker";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                name: "tokenManagers";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }];
            TOKEN_MANAGER_LINKER: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "uint8";
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_HASH";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_NAME";
                outputs: readonly [{
                    internalType: "string";
                    name: "";
                    type: "string";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "REGISTRAR_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "connectSchain";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "disconnectSchain";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "uint256";
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "hasSchain";
                outputs: readonly [{
                    internalType: "bool";
                    name: "connected";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "tokenManager";
                    type: "address";
                }];
                name: "hasTokenManager";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxyAddress";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "linker";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "linkerAddress";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    internalType: "contract IMessageProxyForSchain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "contract ITokenManager";
                    name: "newTokenManager";
                    type: "address";
                }];
                name: "registerTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "contract ITokenManager";
                    name: "tokenManagerAddress";
                    type: "address";
                }];
                name: "removeTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes4";
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                name: "tokenManagers";
                outputs: readonly [{
                    internalType: "contract ITokenManager";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }];
        }[`TOKEN_MANAGER_${T}`];
        address?: {
            COMMUNITY_LOCKER: {
                address: "0xD2aaa00300000000000000000000000000000000";
                key: "schain:community:locker";
                name: "CommunityLocker";
                network: "skale";
                type: "sudo";
            };
            COMMUNITY_POOL: {
                address: "0x588801cA36558310D91234aFC2511502282b1621";
                key: "foreign:community:pool";
                name: "CommunityPool";
                network: "homestead";
                type: "sudo";
            };
            CONFIG_CONTROLLER: {
                address: "0xD2002000000000000000000000000000000000D2";
                key: "schain:config_controller";
                name: "ConfigController";
                network: "skale";
                type: "sudo";
            };
            DEPOSIT_BOX_ERC1155: {
                address: "0x3C02FdEe8E05B6dc4d44a6555b3ff5762D03871a";
                key: "foreign:depositbox:erc1155";
                name: "DepositBoxERC1155";
                network: "homestead";
                type: "ima:bridge";
            };
            DEPOSIT_BOX_ERC20: {
                address: "0x8fB1A35bB6fB9c47Fb5065BE5062cB8dC1687669";
                key: "foreign:depositbox:erc20";
                name: "DepositBoxERC20";
                network: "homestead";
                type: "ima:bridge";
            };
            DEPOSIT_BOX_ERC721: {
                address: "0x7343d31eb99Fd31424bcca9f0a7EAFBc1F515f2d";
                key: "foreign:depositbox:erc721";
                name: "DepositBoxERC721";
                network: "homestead";
                type: "ima:bridge";
            };
            DEPOSIT_BOX_ERC721_WITH_METADATA: {
                address: "0x9f8196D864ee9476bF8DBE68aD07cc555d6B7986";
                key: "foreign:depositbox:erc721_with_metadata";
                name: "DepositBoxERC721";
                network: "homestead";
                type: "ima:bridge";
            };
            DEPOSIT_BOX_ETH: {
                address: "0x9910cF6ba22915C5afCe8b682f7c09d1c001FA59";
                key: "foreign:depositbox:eth";
                name: "DepositBoxEth";
                network: "homestead";
                type: "ima:bridge";
            };
            FILESTORAGE: {
                address: "0xD3002000000000000000000000000000000000d3";
                key: "schain:filestorage";
                name: "FileStorage";
                network: "skale";
                type: "storage";
            };
            LINKER: {
                address: "0x6ef406953bac772C2146389ED37846BA3b6086D1";
                key: "foreign:linker";
                name: "Linker";
                network: "homestead";
                type: "ima:bridge";
            };
            MARIONETTE: {
                address: "0xD2c0DeFACe000000000000000000000000000000";
                key: "schain:marionette";
                name: "Marionette";
                network: "skale";
                type: "sudo";
            };
            MULTISIG_WALLET: {
                address: "0xD244519000000000000000000000000000000000";
                key: "schain:multisig_wallet";
                name: "MultiSigWallet";
                network: "skale";
                type: "sudo";
            };
            TOKEN_MANAGER_ERC1155: {
                address: "0xD2aaA00900000000000000000000000000000000";
                key: "schain:tokenmanager:erc1155";
                name: "TokenManagerERC1155";
                network: "skale";
                type: "ima:bridge";
            };
            TOKEN_MANAGER_ERC20: {
                address: "0xD2aAA00500000000000000000000000000000000";
                key: "schain:tokenmanager:erc20";
                name: "TokenManagerERC20";
                network: "skale";
                type: "ima:bridge";
            };
            TOKEN_MANAGER_ERC721: {
                address: "0xD2aaa00600000000000000000000000000000000";
                key: "schain:tokenmanager:erc721";
                name: "TokenManagerERC721";
                network: "skale";
                type: "ima:bridge";
            };
            TOKEN_MANAGER_ETH: {
                address: "0xd2AaA00400000000000000000000000000000000";
                key: "schain:tokenmanager:eth";
                name: "TokenManagerEth";
                network: "skale";
                type: "ima:bridge";
            };
            TOKEN_MANAGER_LINKER: {
                address: "0xD2aAA00800000000000000000000000000000000";
                key: "schain:tokenmanager:linker";
                name: "TokenManagerLinker";
                network: "skale";
                type: "ima:bridge";
            };
        }[`TOKEN_MANAGER_${T}`]["address"];
        contract?: null | GetContractResult<{
            COMMUNITY_LOCKER: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "bytes32";
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    indexed: false;
                    internalType: "address";
                    name: "user";
                    type: "address";
                }];
                name: "ActivateUser";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "constantHash";
                    type: "bytes32";
                }, {
                    indexed: false;
                    internalType: "uint256";
                    name: "previousValue";
                    type: "uint256";
                }, {
                    indexed: false;
                    internalType: "uint256";
                    name: "newValue";
                    type: "uint256";
                }];
                name: "ConstantUpdated";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "uint8";
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "bytes32";
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    indexed: false;
                    internalType: "address";
                    name: "user";
                    type: "address";
                }];
                name: "LockUser";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                inputs: readonly [];
                name: "CONSTANT_SETTER_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_HASH";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_NAME";
                outputs: readonly [{
                    internalType: "string";
                    name: "";
                    type: "string";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "activeUsers";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "receiver";
                    type: "address";
                }];
                name: "checkAllowedToSendMessage";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "communityPool";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "gasPriceTimestamp";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "uint256";
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "newSchainName";
                    type: "string";
                }, {
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxy";
                    type: "address";
                }, {
                    internalType: "contract ITokenManagerLinker";
                    name: "newTokenManagerLinker";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "newCommunityPool";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "initializeTimestamp";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "lastMessageTimeStamp";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "lastMessageTimeStampToSchain";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "mainnetGasPrice";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    internalType: "contract IMessageProxyForSchain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "fromChainHash";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }, {
                    internalType: "bytes";
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "schainHash";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "uint256";
                    name: "gasPrice";
                    type: "uint256";
                }, {
                    internalType: "uint256";
                    name: "timestamp";
                    type: "uint256";
                }, {
                    components: readonly [{
                        internalType: "uint256[2]";
                        name: "blsSignature";
                        type: "uint256[2]";
                    }, {
                        internalType: "uint256";
                        name: "hashA";
                        type: "uint256";
                    }, {
                        internalType: "uint256";
                        name: "hashB";
                        type: "uint256";
                    }, {
                        internalType: "uint256";
                        name: "counter";
                        type: "uint256";
                    }];
                    internalType: "struct IMessageProxy.Signature";
                    name: "";
                    type: "tuple";
                }];
                name: "setGasPrice";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "chainName";
                    type: "string";
                }, {
                    internalType: "uint256";
                    name: "newTimeLimitPerMessage";
                    type: "uint256";
                }];
                name: "setTimeLimitPerMessage";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes4";
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                name: "timeLimitPerMessage";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "tokenManagerLinker";
                outputs: readonly [{
                    internalType: "contract ITokenManagerLinker";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }];
            COMMUNITY_POOL: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "oldValue";
                    type: "uint256";
                }, {
                    indexed: false;
                    name: "newValue";
                    type: "uint256";
                }];
                name: "MinTransactionGasWasChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "oldMultiplierNumerator";
                    type: "uint256";
                }, {
                    indexed: false;
                    name: "oldMultiplierDivider";
                    type: "uint256";
                }, {
                    indexed: false;
                    name: "newMultiplierNumerator";
                    type: "uint256";
                }, {
                    indexed: false;
                    name: "newMultiplierDivider";
                    type: "uint256";
                }];
                name: "MultiplierWasChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                constant: true;
                inputs: readonly [];
                name: "CONSTANT_SETTER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "LINKER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "address";
                }, {
                    name: "";
                    type: "bytes32";
                }];
                name: "activeUsers";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "contractReceiver";
                    type: "address";
                }];
                name: "addSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "checkUserBalance";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "contractManagerOfSkaleManager";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "user";
                    type: "address";
                }, {
                    name: "schainName";
                    type: "string";
                }];
                name: "getBalance";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "getRecommendedRechargeAmount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "hasSchainContract";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "newMessageProxy";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "linker";
                    type: "address";
                }, {
                    name: "messageProxyValue";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newContractManagerOfSkaleManager";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }];
                name: "isAgentAuthorized";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "sender";
                    type: "address";
                }, {
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "isSchainOwner";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "minTransactionGas";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "multiplierDivider";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "multiplierNumerator";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "user";
                    type: "address";
                }];
                name: "rechargeUserWallet";
                outputs: readonly [];
                payable: true;
                stateMutability: "payable";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "node";
                    type: "address";
                }, {
                    name: "gas";
                    type: "uint256";
                }];
                name: "refundGasBySchainWallet";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "node";
                    type: "address";
                }, {
                    name: "user";
                    type: "address";
                }, {
                    name: "gas";
                    type: "uint256";
                }];
                name: "refundGasByUser";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "removeSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "schainLinks";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newMinTransactionGas";
                    type: "uint256";
                }];
                name: "setMinTransactionGas";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newMultiplierNumerator";
                    type: "uint256";
                }, {
                    name: "newMultiplierDivider";
                    type: "uint256";
                }];
                name: "setMultiplier";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "amount";
                    type: "uint256";
                }];
                name: "withdrawFunds";
                outputs: readonly [];
                payable: false;
                type: "function";
            }];
            CONFIG_CONTROLLER: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "DEPLOYER_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "DEPLOYER_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MTM_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "addr";
                    type: "address";
                }];
                name: "addToWhitelist";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "disableFreeContractDeployment";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "disableMTM";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "enableFreeContractDeployment";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "enableMTM";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "uint256";
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "addr";
                    type: "address";
                }];
                name: "isAddressWhitelisted";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "isFCDEnabled";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "isMTMEnabled";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "addr";
                    type: "address";
                }];
                name: "removeFromWhitelist";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "_version";
                    type: "string";
                }];
                name: "setVersion";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes4";
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "version";
                outputs: readonly [{
                    internalType: "string";
                    name: "";
                    type: "string";
                }];
                stateMutability: "view";
                type: "function";
            }];
            DEPOSIT_BOX_ERC1155: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "schainName";
                    type: "string";
                }, {
                    indexed: true;
                    name: "contractOnMainnet";
                    type: "address";
                }];
                name: "ERC1155TokenAdded";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    indexed: false;
                    name: "ids";
                    type: "uint256[]";
                }, {
                    indexed: false;
                    name: "amounts";
                    type: "uint256[]";
                }];
                name: "ERC1155TokenReady";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEPOSIT_BOX_MANAGER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "LINKER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc1155OnMainnet";
                    type: "address";
                }];
                name: "addERC1155TokenByOwner";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "contractReceiver";
                    type: "address";
                }];
                name: "addSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "contractManagerOfSkaleManager";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc1155OnMainnet";
                    type: "address";
                }, {
                    name: "id";
                    type: "uint256";
                }, {
                    name: "amount";
                    type: "uint256";
                }];
                name: "depositERC1155";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc1155OnMainnet";
                    type: "address";
                }, {
                    name: "ids";
                    type: "uint256[]";
                }, {
                    name: "amounts";
                    type: "uint256[]";
                }];
                name: "depositERC1155Batch";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc1155OnMainnet";
                    type: "address";
                }, {
                    name: "ids";
                    type: "uint256[]";
                }, {
                    name: "amounts";
                    type: "uint256[]";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "depositERC1155BatchDirect";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc1155OnMainnet";
                    type: "address";
                }, {
                    name: "id";
                    type: "uint256";
                }, {
                    name: "amount";
                    type: "uint256";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "depositERC1155Direct";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "disableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "enableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "gasPayer";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc1155OnMainnet";
                    type: "address";
                }, {
                    name: "receiver";
                    type: "address";
                }, {
                    name: "ids";
                    type: "uint256[]";
                }, {
                    name: "amounts";
                    type: "uint256[]";
                }];
                name: "getFunds";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "from";
                    type: "uint256";
                }, {
                    name: "to";
                    type: "uint256";
                }];
                name: "getSchainToAllERC1155";
                outputs: readonly [{
                    name: "tokensInRange";
                    type: "address[]";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "getSchainToAllERC1155Length";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc1155OnMainnet";
                    type: "address";
                }];
                name: "getSchainToERC1155";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "hasSchainContract";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "newMessageProxy";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "linkerValue";
                    type: "address";
                }, {
                    name: "messageProxyValue";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newContractManagerOfSkaleManager";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }];
                name: "isAgentAuthorized";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "sender";
                    type: "address";
                }, {
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "isSchainOwner";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "isWhitelisted";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "linker";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "operator";
                    type: "address";
                }, {
                    name: "";
                    type: "address";
                }, {
                    name: "";
                    type: "uint256[]";
                }, {
                    name: "";
                    type: "uint256[]";
                }, {
                    name: "";
                    type: "bytes";
                }];
                name: "onERC1155BatchReceived";
                outputs: readonly [{
                    name: "";
                    type: "bytes4";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "operator";
                    type: "address";
                }, {
                    name: "";
                    type: "address";
                }, {
                    name: "";
                    type: "uint256";
                }, {
                    name: "";
                    type: "uint256";
                }, {
                    name: "";
                    type: "bytes";
                }];
                name: "onERC1155Received";
                outputs: readonly [{
                    name: "";
                    type: "bytes4";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "removeSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "schainLinks";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }, {
                    name: "";
                    type: "address";
                }, {
                    name: "";
                    type: "uint256";
                }];
                name: "transferredAmount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }];
            DEPOSIT_BOX_ERC20: readonly [{
                inputs: readonly [];
                name: "Empty";
                type: "error";
            }, {
                inputs: readonly [];
                name: "OutOfBounds";
                type: "error";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    indexed: false;
                    name: "oldValue";
                    type: "uint256";
                }, {
                    indexed: false;
                    name: "newValue";
                    type: "uint256";
                }];
                name: "ArbitrageDurationIsChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    indexed: false;
                    name: "oldValue";
                    type: "uint256";
                }, {
                    indexed: false;
                    name: "newValue";
                    type: "uint256";
                }];
                name: "BigTransferDelayIsChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "token";
                    type: "address";
                }, {
                    indexed: false;
                    name: "oldValue";
                    type: "uint256";
                }, {
                    indexed: false;
                    name: "newValue";
                    type: "uint256";
                }];
                name: "BigTransferThresholdIsChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "schainName";
                    type: "string";
                }, {
                    indexed: true;
                    name: "contractOnMainnet";
                    type: "address";
                }];
                name: "ERC20TokenAdded";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    indexed: false;
                    name: "amount";
                    type: "uint256";
                }];
                name: "ERC20TokenReady";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "id";
                    type: "uint256";
                }];
                name: "Escalated";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "id";
                    type: "uint256";
                }, {
                    indexed: false;
                    name: "receiver";
                    type: "address";
                }, {
                    indexed: false;
                    name: "token";
                    type: "address";
                }, {
                    indexed: false;
                    name: "amount";
                    type: "uint256";
                }];
                name: "TransferDelayed";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "id";
                    type: "uint256";
                }];
                name: "TransferSkipped";
                type: "event";
            }, {
                constant: true;
                inputs: readonly [];
                name: "ARBITER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEPOSIT_BOX_MANAGER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "LINKER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc20OnMainnet";
                    type: "address";
                }];
                name: "addERC20TokenByOwner";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "contractReceiver";
                    type: "address";
                }];
                name: "addSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "contractManagerOfSkaleManager";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                name: "delayedTransfers";
                outputs: readonly [{
                    name: "receiver";
                    type: "address";
                }, {
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "token";
                    type: "address";
                }, {
                    name: "amount";
                    type: "uint256";
                }, {
                    name: "untilTimestamp";
                    type: "uint256";
                }, {
                    name: "status";
                    type: "uint8";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "address";
                }];
                name: "delayedTransfersByReceiver";
                outputs: readonly [{
                    name: "_begin";
                    type: "int128";
                }, {
                    name: "_end";
                    type: "int128";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "delayedTransfersSize";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc20OnMainnet";
                    type: "address";
                }, {
                    name: "amount";
                    type: "uint256";
                }];
                name: "depositERC20";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc20OnMainnet";
                    type: "address";
                }, {
                    name: "amount";
                    type: "uint256";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "depositERC20Direct";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "disableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "token";
                    type: "address";
                }, {
                    name: "receiver";
                    type: "address";
                }, {
                    name: "amount";
                    type: "uint256";
                }];
                name: "doTransfer";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "enableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "transferId";
                    type: "uint256";
                }];
                name: "escalate";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "gasPayer";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "getArbitrageDuration";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "token";
                    type: "address";
                }];
                name: "getBigTransferThreshold";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "receiver";
                    type: "address";
                }, {
                    name: "token";
                    type: "address";
                }];
                name: "getDelayedAmount";
                outputs: readonly [{
                    name: "value";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc20OnMainnet";
                    type: "address";
                }, {
                    name: "receiver";
                    type: "address";
                }, {
                    name: "amount";
                    type: "uint256";
                }];
                name: "getFunds";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "receiver";
                    type: "address";
                }, {
                    name: "token";
                    type: "address";
                }];
                name: "getNextUnlockTimestamp";
                outputs: readonly [{
                    name: "unlockTimestamp";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "from";
                    type: "uint256";
                }, {
                    name: "to";
                    type: "uint256";
                }];
                name: "getSchainToAllERC20";
                outputs: readonly [{
                    name: "tokensInRange";
                    type: "address[]";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "getSchainToAllERC20Length";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc20OnMainnet";
                    type: "address";
                }];
                name: "getSchainToERC20";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "getTimeDelay";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "index";
                    type: "uint256";
                }];
                name: "getTrustedReceiver";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "getTrustedReceiversAmount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "hasSchainContract";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "newMessageProxy";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "linkerValue";
                    type: "address";
                }, {
                    name: "messageProxyValue";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newContractManagerOfSkaleManager";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }];
                name: "isAgentAuthorized";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "isReceiverTrusted";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "sender";
                    type: "address";
                }, {
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "isSchainOwner";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "isWhitelisted";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "linker";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "transferId";
                    type: "uint256";
                }];
                name: "rejectTransfer";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "removeSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [];
                name: "retrieve";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "receiver";
                    type: "address";
                }];
                name: "retrieveFor";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "schainLinks";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "delayInSeconds";
                    type: "uint256";
                }];
                name: "setArbitrageDuration";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "delayInSeconds";
                    type: "uint256";
                }];
                name: "setBigTransferDelay";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "token";
                    type: "address";
                }, {
                    name: "value";
                    type: "uint256";
                }];
                name: "setBigTransferValue";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "stopTrustingReceiver";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }, {
                    name: "";
                    type: "address";
                }];
                name: "transferredAmount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "trustReceiver";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "transferId";
                    type: "uint256";
                }];
                name: "validateTransfer";
                outputs: readonly [];
                payable: false;
                type: "function";
            }];
            DEPOSIT_BOX_ERC721: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "schainName";
                    type: "string";
                }, {
                    indexed: true;
                    name: "contractOnMainnet";
                    type: "address";
                }];
                name: "ERC721TokenAdded";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    indexed: false;
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "ERC721TokenReady";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEPOSIT_BOX_MANAGER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "LINKER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }];
                name: "addERC721TokenByOwner";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "contractReceiver";
                    type: "address";
                }];
                name: "addSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "contractManagerOfSkaleManager";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }, {
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "depositERC721";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }, {
                    name: "tokenId";
                    type: "uint256";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "depositERC721Direct";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "disableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "enableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "gasPayer";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }, {
                    name: "receiver";
                    type: "address";
                }, {
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "getFunds";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "from";
                    type: "uint256";
                }, {
                    name: "to";
                    type: "uint256";
                }];
                name: "getSchainToAllERC721";
                outputs: readonly [{
                    name: "tokensInRange";
                    type: "address[]";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "getSchainToAllERC721Length";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }];
                name: "getSchainToERC721";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "hasSchainContract";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "newMessageProxy";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "linkerValue";
                    type: "address";
                }, {
                    name: "messageProxyValue";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newContractManagerOfSkaleManager";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }];
                name: "isAgentAuthorized";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "sender";
                    type: "address";
                }, {
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "isSchainOwner";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "isWhitelisted";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "linker";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "removeSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "schainLinks";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "address";
                }, {
                    name: "";
                    type: "uint256";
                }];
                name: "transferredAmount";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }];
            DEPOSIT_BOX_ERC721_WITH_METADATA: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "schainName";
                    type: "string";
                }, {
                    indexed: true;
                    name: "contractOnMainnet";
                    type: "address";
                }];
                name: "ERC721TokenAdded";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    indexed: false;
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "ERC721TokenReady";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEPOSIT_BOX_MANAGER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "LINKER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }];
                name: "addERC721TokenByOwner";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "contractReceiver";
                    type: "address";
                }];
                name: "addSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "contractManagerOfSkaleManager";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }, {
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "depositERC721";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }, {
                    name: "tokenId";
                    type: "uint256";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "depositERC721Direct";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "disableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "enableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "gasPayer";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }, {
                    name: "receiver";
                    type: "address";
                }, {
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "getFunds";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "from";
                    type: "uint256";
                }, {
                    name: "to";
                    type: "uint256";
                }];
                name: "getSchainToAllERC721";
                outputs: readonly [{
                    name: "tokensInRange";
                    type: "address[]";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "getSchainToAllERC721Length";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "erc721OnMainnet";
                    type: "address";
                }];
                name: "getSchainToERC721";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "hasSchainContract";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "newMessageProxy";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "linkerValue";
                    type: "address";
                }, {
                    name: "messageProxyValue";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newContractManagerOfSkaleManager";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }];
                name: "isAgentAuthorized";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "sender";
                    type: "address";
                }, {
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "isSchainOwner";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "isWhitelisted";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "linker";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "removeSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "schainLinks";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "address";
                }, {
                    name: "";
                    type: "uint256";
                }];
                name: "transferredAmount";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }];
            DEPOSIT_BOX_ETH: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    indexed: false;
                    name: "active";
                    type: "bool";
                }];
                name: "ActiveEthTransfers";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEPOSIT_BOX_MANAGER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "LINKER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "activeEthTransfers";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "contractReceiver";
                    type: "address";
                }];
                name: "addSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "address";
                }];
                name: "approveTransfers";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "contractManagerOfSkaleManager";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "deposit";
                outputs: readonly [];
                payable: true;
                stateMutability: "payable";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "receiver";
                    type: "address";
                }];
                name: "depositDirect";
                outputs: readonly [];
                payable: true;
                stateMutability: "payable";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "disableActiveEthTransfers";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "disableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "enableActiveEthTransfers";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "enableWhitelist";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "gasPayer";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "receiver";
                    type: "address";
                }, {
                    name: "amount";
                    type: "uint256";
                }];
                name: "getFunds";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [];
                name: "getMyEth";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "hasSchainContract";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "newMessageProxy";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "linkerValue";
                    type: "address";
                }, {
                    name: "messageProxyValue";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newContractManagerOfSkaleManager";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }];
                name: "isAgentAuthorized";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "sender";
                    type: "address";
                }, {
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "isSchainOwner";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "isWhitelisted";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "linker";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "removeSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "schainLinks";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "transferredAmount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }];
            FILESTORAGE: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                inputs: readonly [];
                name: "ALLOCATOR_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "EMPTY_INDEX";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAX_BLOCK_COUNT";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAX_FILESIZE";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MEGABYTE";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "STORAGE_SPACE_SLOT";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "uint256";
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes4";
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "userAddress";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "reservedSpace";
                    type: "uint256";
                }];
                name: "reserveSpace";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "directoryPath";
                    type: "string";
                }];
                name: "createDirectory";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "directoryPath";
                    type: "string";
                }];
                name: "deleteDirectory";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "filePath";
                    type: "string";
                }, {
                    internalType: "uint256";
                    name: "fileSize";
                    type: "uint256";
                }];
                name: "startUpload";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "filePath";
                    type: "string";
                }, {
                    internalType: "uint256";
                    name: "position";
                    type: "uint256";
                }, {
                    internalType: "bytes";
                    name: "data";
                    type: "bytes";
                }];
                name: "uploadChunk";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "filePath";
                    type: "string";
                }];
                name: "finishUpload";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "filePath";
                    type: "string";
                }];
                name: "deleteFile";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "storagePath";
                    type: "string";
                }, {
                    internalType: "uint256";
                    name: "position";
                    type: "uint256";
                }, {
                    internalType: "uint256";
                    name: "length";
                    type: "uint256";
                }];
                name: "readChunk";
                outputs: readonly [{
                    internalType: "bytes32[32768]";
                    name: "chunk";
                    type: "bytes32[32768]";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "storagePath";
                    type: "string";
                }];
                name: "listDirectory";
                outputs: readonly [{
                    components: readonly [{
                        internalType: "string";
                        name: "name";
                        type: "string";
                    }, {
                        internalType: "bool";
                        name: "isFile";
                        type: "bool";
                    }, {
                        internalType: "uint256";
                        name: "size";
                        type: "uint256";
                    }, {
                        internalType: "enum FileStorage.FileStatus";
                        name: "status";
                        type: "uint8";
                    }, {
                        internalType: "bool[]";
                        name: "isChunkUploaded";
                        type: "bool[]";
                    }];
                    internalType: "struct FileStorage.ContentInfo[]";
                    name: "";
                    type: "tuple[]";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "storagePath";
                    type: "string";
                }];
                name: "getFileStatus";
                outputs: readonly [{
                    internalType: "enum FileStorage.FileStatus";
                    name: "";
                    type: "uint8";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "storagePath";
                    type: "string";
                }];
                name: "getFileSize";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "fileSize";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "getTotalStorageSpace";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "getTotalReservedSpace";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "owner";
                    type: "address";
                }];
                name: "getReservedSpace";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "owner";
                    type: "address";
                }];
                name: "getOccupiedSpace";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "getMaxContentCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "getMaxChunkSize";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }];
            LINKER: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                constant: true;
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "LINKER_ROLE";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "contractReceiver";
                    type: "address";
                }];
                name: "addSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }, {
                    name: "schainContracts";
                    type: "address[]";
                }];
                name: "connectSchain";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "contractManagerOfSkaleManager";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "disconnectSchain";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "mainnetContract";
                    type: "address";
                }];
                name: "hasMainnetContract";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "hasSchain";
                outputs: readonly [{
                    name: "connected";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "hasSchainContract";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "contractManagerOfSkaleManagerValue";
                    type: "address";
                }, {
                    name: "messageProxyValue";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newContractManagerOfSkaleManager";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }, {
                    name: "sender";
                    type: "address";
                }];
                name: "isAgentAuthorized";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "isNotKilled";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "sender";
                    type: "address";
                }, {
                    name: "schainHash";
                    type: "bytes32";
                }];
                name: "isSchainOwner";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "kill";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "newMainnetContract";
                    type: "address";
                }];
                name: "registerMainnetContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "mainnetContract";
                    type: "address";
                }];
                name: "removeMainnetContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "schainName";
                    type: "string";
                }];
                name: "removeSchainContract";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "role";
                    type: "bytes32";
                }, {
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                payable: false;
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "schainLinks";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "bytes32";
                }];
                name: "statuses";
                outputs: readonly [{
                    name: "";
                    type: "uint8";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }];
            MARIONETTE: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "uint256";
                    name: "amount";
                    type: "uint256";
                }];
                name: "EtherReceived";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "address";
                    name: "receiver";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "uint256";
                    name: "amount";
                    type: "uint256";
                }];
                name: "EtherSent";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "bytes";
                    name: "output";
                    type: "bytes";
                }];
                name: "FunctionCallResult";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "uint8";
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                inputs: readonly [];
                name: "ACCESS_VIOLATION";
                outputs: readonly [{
                    internalType: "string";
                    name: "";
                    type: "string";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "IMA_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "PUPPETEER_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "receiver";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "value";
                    type: "uint256";
                }, {
                    internalType: "bytes";
                    name: "data";
                    type: "bytes";
                }];
                name: "encodeFunctionCall";
                outputs: readonly [{
                    internalType: "bytes";
                    name: "";
                    type: "bytes";
                }];
                stateMutability: "pure";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address payable";
                    name: "target";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "value";
                    type: "uint256";
                }, {
                    internalType: "bytes";
                    name: "data";
                    type: "bytes";
                }];
                name: "execute";
                outputs: readonly [{
                    internalType: "bytes";
                    name: "";
                    type: "bytes";
                }];
                stateMutability: "payable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "uint256";
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "owner";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "ima";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }, {
                    internalType: "bytes";
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address payable";
                    name: "target";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "value";
                    type: "uint256";
                }];
                name: "sendSFuel";
                outputs: readonly [];
                stateMutability: "payable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes4";
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                stateMutability: "payable";
                type: "receive";
            }];
            MULTISIG_WALLET: readonly [{
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                name: "owners";
                outputs: readonly [{
                    name: "";
                    type: "address";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "owner";
                    type: "address";
                }];
                name: "removeOwner";
                outputs: readonly [];
                payable: false;
                stateMutability: "nonpayable";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "revokeConfirmation";
                outputs: readonly [];
                payable: false;
                stateMutability: "nonpayable";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "address";
                }];
                name: "isOwner";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "uint256";
                }, {
                    name: "";
                    type: "address";
                }];
                name: "confirmations";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "calcMaxWithdraw";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "pending";
                    type: "bool";
                }, {
                    name: "executed";
                    type: "bool";
                }];
                name: "getTransactionCount";
                outputs: readonly [{
                    name: "count";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "dailyLimit";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "lastDay";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "owner";
                    type: "address";
                }];
                name: "addOwner";
                outputs: readonly [];
                payable: false;
                stateMutability: "nonpayable";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "isConfirmed";
                outputs: readonly [{
                    name: "";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "getConfirmationCount";
                outputs: readonly [{
                    name: "count";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                name: "transactions";
                outputs: readonly [{
                    name: "destination";
                    type: "address";
                }, {
                    name: "value";
                    type: "uint256";
                }, {
                    name: "data";
                    type: "bytes";
                }, {
                    name: "executed";
                    type: "bool";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "getOwners";
                outputs: readonly [{
                    name: "";
                    type: "address[]";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "from";
                    type: "uint256";
                }, {
                    name: "to";
                    type: "uint256";
                }, {
                    name: "pending";
                    type: "bool";
                }, {
                    name: "executed";
                    type: "bool";
                }];
                name: "getTransactionIds";
                outputs: readonly [{
                    name: "_transactionIds";
                    type: "uint256[]";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [{
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "getConfirmations";
                outputs: readonly [{
                    name: "_confirmations";
                    type: "address[]";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "transactionCount";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "_required";
                    type: "uint256";
                }];
                name: "changeRequirement";
                outputs: readonly [];
                payable: false;
                stateMutability: "nonpayable";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "confirmTransaction";
                outputs: readonly [];
                payable: false;
                stateMutability: "nonpayable";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "destination";
                    type: "address";
                }, {
                    name: "value";
                    type: "uint256";
                }, {
                    name: "data";
                    type: "bytes";
                }];
                name: "submitTransaction";
                outputs: readonly [{
                    name: "transactionId";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "nonpayable";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "_dailyLimit";
                    type: "uint256";
                }];
                name: "changeDailyLimit";
                outputs: readonly [];
                payable: false;
                stateMutability: "nonpayable";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "MAX_OWNER_COUNT";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "required";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "owner";
                    type: "address";
                }, {
                    name: "newOwner";
                    type: "address";
                }];
                name: "replaceOwner";
                outputs: readonly [];
                payable: false;
                stateMutability: "nonpayable";
                type: "function";
            }, {
                constant: false;
                inputs: readonly [{
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "executeTransaction";
                outputs: readonly [];
                payable: false;
                stateMutability: "nonpayable";
                type: "function";
            }, {
                constant: true;
                inputs: readonly [];
                name: "spentToday";
                outputs: readonly [{
                    name: "";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    name: "_owners";
                    type: "address[]";
                }, {
                    name: "_required";
                    type: "uint256";
                }, {
                    name: "_dailyLimit";
                    type: "uint256";
                }];
                payable: false;
                stateMutability: "nonpayable";
                type: "constructor";
            }, {
                payable: true;
                stateMutability: "payable";
                type: "fallback";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "dailyLimit";
                    type: "uint256";
                }];
                name: "DailyLimitChange";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "sender";
                    type: "address";
                }, {
                    indexed: true;
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "Confirmation";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "sender";
                    type: "address";
                }, {
                    indexed: true;
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "Revocation";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "Submission";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "Execution";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "transactionId";
                    type: "uint256";
                }];
                name: "ExecutionFailure";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "sender";
                    type: "address";
                }, {
                    indexed: false;
                    name: "value";
                    type: "uint256";
                }];
                name: "Deposit";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "owner";
                    type: "address";
                }];
                name: "OwnerAddition";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    name: "owner";
                    type: "address";
                }];
                name: "OwnerRemoval";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    name: "required";
                    type: "uint256";
                }];
                name: "RequirementChange";
                type: "event";
            }];
            TOKEN_MANAGER_ERC1155: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "address";
                    name: "oldValue";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "address";
                    name: "newValue";
                    type: "address";
                }];
                name: "DepositBoxWasChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc1155OnMainnet";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc1155OnSchain";
                    type: "address";
                }];
                name: "ERC1155TokenAdded";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc1155OnMainnet";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc1155OnSchain";
                    type: "address";
                }];
                name: "ERC1155TokenCreated";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "uint256[]";
                    name: "ids";
                    type: "uint256[]";
                }, {
                    indexed: false;
                    internalType: "uint256[]";
                    name: "amounts";
                    type: "uint256[]";
                }];
                name: "ERC1155TokenReady";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc1155OnMainnet";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc1155OnSchain";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "uint256[]";
                    name: "ids";
                    type: "uint256[]";
                }, {
                    indexed: false;
                    internalType: "uint256[]";
                    name: "amounts";
                    type: "uint256[]";
                }];
                name: "ERC1155TokenReceived";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "uint8";
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                inputs: readonly [];
                name: "AUTOMATIC_DEPLOY_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_HASH";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_NAME";
                outputs: readonly [{
                    internalType: "string";
                    name: "";
                    type: "string";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "TOKEN_REGISTRAR_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "targetChainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "erc1155OnMainnet";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "erc1155OnSchain";
                    type: "address";
                }];
                name: "addERC1155TokenByOwner";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "newTokenManager";
                    type: "address";
                }];
                name: "addTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "contract ERC1155OnChain";
                    name: "";
                    type: "address";
                }];
                name: "addedClones";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "automaticDeploy";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "changeDepositBoxAddress";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "clonesErc1155";
                outputs: readonly [{
                    internalType: "contract ERC1155OnChain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "communityLocker";
                outputs: readonly [{
                    internalType: "contract ICommunityLocker";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "depositBox";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "deprecatedClonesErc1155";
                outputs: readonly [{
                    internalType: "contract ERC1155OnChain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "disableAutomaticDeploy";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "enableAutomaticDeploy";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "id";
                    type: "uint256";
                }, {
                    internalType: "uint256";
                    name: "amount";
                    type: "uint256";
                }];
                name: "exitToMainERC1155";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    internalType: "uint256[]";
                    name: "ids";
                    type: "uint256[]";
                }, {
                    internalType: "uint256[]";
                    name: "amounts";
                    type: "uint256[]";
                }];
                name: "exitToMainERC1155Batch";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "uint256";
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "hasTokenManager";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "newChainName";
                    type: "string";
                }, {
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxy";
                    type: "address";
                }, {
                    internalType: "contract ITokenManagerLinker";
                    name: "newIMALinker";
                    type: "address";
                }, {
                    internalType: "contract ICommunityLocker";
                    name: "newCommunityLocker";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "newSchainName";
                    type: "string";
                }, {
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxy";
                    type: "address";
                }, {
                    internalType: "contract ITokenManagerLinker";
                    name: "newIMALinker";
                    type: "address";
                }, {
                    internalType: "contract ICommunityLocker";
                    name: "newCommunityLocker";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "initializeTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    internalType: "contract IMessageProxyForSchain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "operator";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "";
                    type: "address";
                }, {
                    internalType: "uint256[]";
                    name: "";
                    type: "uint256[]";
                }, {
                    internalType: "uint256[]";
                    name: "";
                    type: "uint256[]";
                }, {
                    internalType: "bytes";
                    name: "";
                    type: "bytes";
                }];
                name: "onERC1155BatchReceived";
                outputs: readonly [{
                    internalType: "bytes4";
                    name: "";
                    type: "bytes4";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "operator";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }, {
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }, {
                    internalType: "bytes";
                    name: "";
                    type: "bytes";
                }];
                name: "onERC1155Received";
                outputs: readonly [{
                    internalType: "bytes4";
                    name: "";
                    type: "bytes4";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "fromChainHash";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }, {
                    internalType: "bytes";
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "removeTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "schainHash";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes4";
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "tokenManagerLinker";
                outputs: readonly [{
                    internalType: "contract ITokenManagerLinker";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                name: "tokenManagers";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "targetSchainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "id";
                    type: "uint256";
                }, {
                    internalType: "uint256";
                    name: "amount";
                    type: "uint256";
                }];
                name: "transferToSchainERC1155";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "targetSchainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    internalType: "uint256[]";
                    name: "ids";
                    type: "uint256[]";
                }, {
                    internalType: "uint256[]";
                    name: "amounts";
                    type: "uint256[]";
                }];
                name: "transferToSchainERC1155Batch";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                name: "transferredAmount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }];
            TOKEN_MANAGER_ERC20: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "address";
                    name: "oldValue";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "address";
                    name: "newValue";
                    type: "address";
                }];
                name: "DepositBoxWasChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc20OnMainChain";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc20OnSchain";
                    type: "address";
                }];
                name: "ERC20TokenAdded";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc20OnMainChain";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc20OnSchain";
                    type: "address";
                }];
                name: "ERC20TokenCreated";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "uint256";
                    name: "amount";
                    type: "uint256";
                }];
                name: "ERC20TokenReady";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc20OnMainChain";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc20OnSchain";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "uint256";
                    name: "amount";
                    type: "uint256";
                }];
                name: "ERC20TokenReceived";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "uint8";
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                inputs: readonly [];
                name: "AUTOMATIC_DEPLOY_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_HASH";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_NAME";
                outputs: readonly [{
                    internalType: "string";
                    name: "";
                    type: "string";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "TOKEN_REGISTRAR_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "targetChainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "erc20OnMainChain";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "erc20OnSchain";
                    type: "address";
                }];
                name: "addERC20TokenByOwner";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "newTokenManager";
                    type: "address";
                }];
                name: "addTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "contract ERC20OnChain";
                    name: "";
                    type: "address";
                }];
                name: "addedClones";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "automaticDeploy";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "changeDepositBoxAddress";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "clonesErc20";
                outputs: readonly [{
                    internalType: "contract ERC20OnChain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "communityLocker";
                outputs: readonly [{
                    internalType: "contract ICommunityLocker";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "depositBox";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "deprecatedClonesErc20";
                outputs: readonly [{
                    internalType: "contract ERC20OnChain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "disableAutomaticDeploy";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "enableAutomaticDeploy";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "amount";
                    type: "uint256";
                }];
                name: "exitToMainERC20";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "uint256";
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "hasTokenManager";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "newChainName";
                    type: "string";
                }, {
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxy";
                    type: "address";
                }, {
                    internalType: "contract ITokenManagerLinker";
                    name: "newIMALinker";
                    type: "address";
                }, {
                    internalType: "contract ICommunityLocker";
                    name: "newCommunityLocker";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "newSchainName";
                    type: "string";
                }, {
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxy";
                    type: "address";
                }, {
                    internalType: "contract ITokenManagerLinker";
                    name: "newIMALinker";
                    type: "address";
                }, {
                    internalType: "contract ICommunityLocker";
                    name: "newCommunityLocker";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "initializeTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    internalType: "contract IMessageProxyForSchain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "fromChainHash";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }, {
                    internalType: "bytes";
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "removeTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "schainHash";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes4";
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "tokenManagerLinker";
                outputs: readonly [{
                    internalType: "contract ITokenManagerLinker";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                name: "tokenManagers";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "contract IERC20Upgradeable";
                    name: "";
                    type: "address";
                }];
                name: "totalSupplyOnMainnet";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "targetSchainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "amount";
                    type: "uint256";
                }];
                name: "transferToSchainERC20";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "transferredAmount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }];
            TOKEN_MANAGER_ERC721: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "address";
                    name: "oldValue";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "address";
                    name: "newValue";
                    type: "address";
                }];
                name: "DepositBoxWasChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc721OnMainChain";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc721OnSchain";
                    type: "address";
                }];
                name: "ERC721TokenAdded";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc721OnMainChain";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc721OnSchain";
                    type: "address";
                }];
                name: "ERC721TokenCreated";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "uint256";
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "ERC721TokenReady";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "chainHash";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc721OnMainChain";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "erc721OnSchain";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "uint256";
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "ERC721TokenReceived";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "uint8";
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                inputs: readonly [];
                name: "AUTOMATIC_DEPLOY_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_HASH";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_NAME";
                outputs: readonly [{
                    internalType: "string";
                    name: "";
                    type: "string";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "TOKEN_REGISTRAR_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "targetChainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "erc721OnMainChain";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "erc721OnSchain";
                    type: "address";
                }];
                name: "addERC721TokenByOwner";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "newTokenManager";
                    type: "address";
                }];
                name: "addTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "contract ERC721OnChain";
                    name: "";
                    type: "address";
                }];
                name: "addedClones";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "automaticDeploy";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "changeDepositBoxAddress";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "clonesErc721";
                outputs: readonly [{
                    internalType: "contract ERC721OnChain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "communityLocker";
                outputs: readonly [{
                    internalType: "contract ICommunityLocker";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "depositBox";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                name: "deprecatedClonesErc721";
                outputs: readonly [{
                    internalType: "contract ERC721OnChain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "disableAutomaticDeploy";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "enableAutomaticDeploy";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "exitToMainERC721";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "uint256";
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "hasTokenManager";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "newChainName";
                    type: "string";
                }, {
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxy";
                    type: "address";
                }, {
                    internalType: "contract ITokenManagerLinker";
                    name: "newIMALinker";
                    type: "address";
                }, {
                    internalType: "contract ICommunityLocker";
                    name: "newCommunityLocker";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "newSchainName";
                    type: "string";
                }, {
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxy";
                    type: "address";
                }, {
                    internalType: "contract ITokenManagerLinker";
                    name: "newIMALinker";
                    type: "address";
                }, {
                    internalType: "contract ICommunityLocker";
                    name: "newCommunityLocker";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "initializeTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    internalType: "contract IMessageProxyForSchain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "fromChainHash";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }, {
                    internalType: "bytes";
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "removeTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "schainHash";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes4";
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "tokenManagerLinker";
                outputs: readonly [{
                    internalType: "contract ITokenManagerLinker";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                name: "tokenManagers";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "targetSchainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "contractOnMainnet";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "tokenId";
                    type: "uint256";
                }];
                name: "transferToSchainERC721";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }, {
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                name: "transferredAmount";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }];
            TOKEN_MANAGER_ETH: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "address";
                    name: "oldValue";
                    type: "address";
                }, {
                    indexed: false;
                    internalType: "address";
                    name: "newValue";
                    type: "address";
                }];
                name: "DepositBoxWasChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "uint8";
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                inputs: readonly [];
                name: "AUTOMATIC_DEPLOY_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_HASH";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_NAME";
                outputs: readonly [{
                    internalType: "string";
                    name: "";
                    type: "string";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "TOKEN_REGISTRAR_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }, {
                    internalType: "address";
                    name: "newTokenManager";
                    type: "address";
                }];
                name: "addTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "automaticDeploy";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "changeDepositBoxAddress";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "communityLocker";
                outputs: readonly [{
                    internalType: "contract ICommunityLocker";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "depositBox";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "disableAutomaticDeploy";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "enableAutomaticDeploy";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "ethErc20";
                outputs: readonly [{
                    internalType: "contract IEthErc20";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "uint256";
                    name: "amount";
                    type: "uint256";
                }];
                name: "exitToMain";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "uint256";
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "hasTokenManager";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "newChainName";
                    type: "string";
                }, {
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxy";
                    type: "address";
                }, {
                    internalType: "contract ITokenManagerLinker";
                    name: "newIMALinker";
                    type: "address";
                }, {
                    internalType: "contract ICommunityLocker";
                    name: "newCommunityLocker";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }, {
                    internalType: "contract IEthErc20";
                    name: "ethErc20Address";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "newSchainName";
                    type: "string";
                }, {
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxy";
                    type: "address";
                }, {
                    internalType: "contract ITokenManagerLinker";
                    name: "newIMALinker";
                    type: "address";
                }, {
                    internalType: "contract ICommunityLocker";
                    name: "newCommunityLocker";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "newDepositBox";
                    type: "address";
                }];
                name: "initializeTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    internalType: "contract IMessageProxyForSchain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "fromChainHash";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }, {
                    internalType: "bytes";
                    name: "data";
                    type: "bytes";
                }];
                name: "postMessage";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "removeTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "schainHash";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "contract IEthErc20";
                    name: "newEthErc20Address";
                    type: "address";
                }];
                name: "setEthErc20Address";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes4";
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "tokenManagerLinker";
                outputs: readonly [{
                    internalType: "contract ITokenManagerLinker";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                name: "tokenManagers";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }];
            TOKEN_MANAGER_LINKER: readonly [{
                anonymous: false;
                inputs: readonly [{
                    indexed: false;
                    internalType: "uint8";
                    name: "version";
                    type: "uint8";
                }];
                name: "Initialized";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "previousAdminRole";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "bytes32";
                    name: "newAdminRole";
                    type: "bytes32";
                }];
                name: "RoleAdminChanged";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleGranted";
                type: "event";
            }, {
                anonymous: false;
                inputs: readonly [{
                    indexed: true;
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "account";
                    type: "address";
                }, {
                    indexed: true;
                    internalType: "address";
                    name: "sender";
                    type: "address";
                }];
                name: "RoleRevoked";
                type: "event";
            }, {
                inputs: readonly [];
                name: "DEFAULT_ADMIN_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_HASH";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "MAINNET_NAME";
                outputs: readonly [{
                    internalType: "string";
                    name: "";
                    type: "string";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "REGISTRAR_ROLE";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "connectSchain";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "disconnectSchain";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleAdmin";
                outputs: readonly [{
                    internalType: "bytes32";
                    name: "";
                    type: "bytes32";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "uint256";
                    name: "index";
                    type: "uint256";
                }];
                name: "getRoleMember";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }];
                name: "getRoleMemberCount";
                outputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "grantRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "hasRole";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "string";
                    name: "schainName";
                    type: "string";
                }];
                name: "hasSchain";
                outputs: readonly [{
                    internalType: "bool";
                    name: "connected";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "address";
                    name: "tokenManager";
                    type: "address";
                }];
                name: "hasTokenManager";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "contract IMessageProxyForSchain";
                    name: "newMessageProxyAddress";
                    type: "address";
                }, {
                    internalType: "address";
                    name: "linker";
                    type: "address";
                }];
                name: "initialize";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [];
                name: "linkerAddress";
                outputs: readonly [{
                    internalType: "address";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [];
                name: "messageProxy";
                outputs: readonly [{
                    internalType: "contract IMessageProxyForSchain";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "contract ITokenManager";
                    name: "newTokenManager";
                    type: "address";
                }];
                name: "registerTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "contract ITokenManager";
                    name: "tokenManagerAddress";
                    type: "address";
                }];
                name: "removeTokenManager";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "renounceRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes32";
                    name: "role";
                    type: "bytes32";
                }, {
                    internalType: "address";
                    name: "account";
                    type: "address";
                }];
                name: "revokeRole";
                outputs: readonly [];
                stateMutability: "nonpayable";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "bytes4";
                    name: "interfaceId";
                    type: "bytes4";
                }];
                name: "supportsInterface";
                outputs: readonly [{
                    internalType: "bool";
                    name: "";
                    type: "bool";
                }];
                stateMutability: "view";
                type: "function";
            }, {
                inputs: readonly [{
                    internalType: "uint256";
                    name: "";
                    type: "uint256";
                }];
                name: "tokenManagers";
                outputs: readonly [{
                    internalType: "contract ITokenManager";
                    name: "";
                    type: "address";
                }];
                stateMutability: "view";
                type: "function";
            }];
        }[`TOKEN_MANAGER_${T}`]>;
    }

    • Optional abi?: {
          COMMUNITY_LOCKER: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "bytes32";
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "user";
                  type: "address";
              }];
              name: "ActivateUser";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "constantHash";
                  type: "bytes32";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "previousValue";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "newValue";
                  type: "uint256";
              }];
              name: "ConstantUpdated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint8";
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "bytes32";
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "user";
                  type: "address";
              }];
              name: "LockUser";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              inputs: readonly [];
              name: "CONSTANT_SETTER_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_HASH";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_NAME";
              outputs: readonly [{
                  internalType: "string";
                  name: "";
                  type: "string";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "activeUsers";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "receiver";
                  type: "address";
              }];
              name: "checkAllowedToSendMessage";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "communityPool";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "gasPriceTimestamp";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "uint256";
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "newSchainName";
                  type: "string";
              }, {
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxy";
                  type: "address";
              }, {
                  internalType: "contract ITokenManagerLinker";
                  name: "newTokenManagerLinker";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "newCommunityPool";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "initializeTimestamp";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "lastMessageTimeStamp";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "lastMessageTimeStampToSchain";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "mainnetGasPrice";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  internalType: "contract IMessageProxyForSchain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "fromChainHash";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }, {
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "schainHash";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "gasPrice";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "timestamp";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "uint256[2]";
                      name: "blsSignature";
                      type: "uint256[2]";
                  }, {
                      internalType: "uint256";
                      name: "hashA";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "hashB";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "counter";
                      type: "uint256";
                  }];
                  internalType: "struct IMessageProxy.Signature";
                  name: "";
                  type: "tuple";
              }];
              name: "setGasPrice";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "chainName";
                  type: "string";
              }, {
                  internalType: "uint256";
                  name: "newTimeLimitPerMessage";
                  type: "uint256";
              }];
              name: "setTimeLimitPerMessage";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes4";
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              name: "timeLimitPerMessage";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "tokenManagerLinker";
              outputs: readonly [{
                  internalType: "contract ITokenManagerLinker";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }];
          COMMUNITY_POOL: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "oldValue";
                  type: "uint256";
              }, {
                  indexed: false;
                  name: "newValue";
                  type: "uint256";
              }];
              name: "MinTransactionGasWasChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "oldMultiplierNumerator";
                  type: "uint256";
              }, {
                  indexed: false;
                  name: "oldMultiplierDivider";
                  type: "uint256";
              }, {
                  indexed: false;
                  name: "newMultiplierNumerator";
                  type: "uint256";
              }, {
                  indexed: false;
                  name: "newMultiplierDivider";
                  type: "uint256";
              }];
              name: "MultiplierWasChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              constant: true;
              inputs: readonly [];
              name: "CONSTANT_SETTER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "LINKER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "address";
              }, {
                  name: "";
                  type: "bytes32";
              }];
              name: "activeUsers";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "contractReceiver";
                  type: "address";
              }];
              name: "addSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "checkUserBalance";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "contractManagerOfSkaleManager";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "user";
                  type: "address";
              }, {
                  name: "schainName";
                  type: "string";
              }];
              name: "getBalance";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "getRecommendedRechargeAmount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "hasSchainContract";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "newMessageProxy";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "linker";
                  type: "address";
              }, {
                  name: "messageProxyValue";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newContractManagerOfSkaleManager";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }];
              name: "isAgentAuthorized";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "sender";
                  type: "address";
              }, {
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "isSchainOwner";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "minTransactionGas";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "multiplierDivider";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "multiplierNumerator";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "user";
                  type: "address";
              }];
              name: "rechargeUserWallet";
              outputs: readonly [];
              payable: true;
              stateMutability: "payable";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "node";
                  type: "address";
              }, {
                  name: "gas";
                  type: "uint256";
              }];
              name: "refundGasBySchainWallet";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "node";
                  type: "address";
              }, {
                  name: "user";
                  type: "address";
              }, {
                  name: "gas";
                  type: "uint256";
              }];
              name: "refundGasByUser";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "removeSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "schainLinks";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newMinTransactionGas";
                  type: "uint256";
              }];
              name: "setMinTransactionGas";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newMultiplierNumerator";
                  type: "uint256";
              }, {
                  name: "newMultiplierDivider";
                  type: "uint256";
              }];
              name: "setMultiplier";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "amount";
                  type: "uint256";
              }];
              name: "withdrawFunds";
              outputs: readonly [];
              payable: false;
              type: "function";
          }];
          CONFIG_CONTROLLER: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "DEPLOYER_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "DEPLOYER_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MTM_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "addr";
                  type: "address";
              }];
              name: "addToWhitelist";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "disableFreeContractDeployment";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "disableMTM";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "enableFreeContractDeployment";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "enableMTM";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "uint256";
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "addr";
                  type: "address";
              }];
              name: "isAddressWhitelisted";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "isFCDEnabled";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "isMTMEnabled";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "addr";
                  type: "address";
              }];
              name: "removeFromWhitelist";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "_version";
                  type: "string";
              }];
              name: "setVersion";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes4";
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "version";
              outputs: readonly [{
                  internalType: "string";
                  name: "";
                  type: "string";
              }];
              stateMutability: "view";
              type: "function";
          }];
          DEPOSIT_BOX_ERC1155: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "schainName";
                  type: "string";
              }, {
                  indexed: true;
                  name: "contractOnMainnet";
                  type: "address";
              }];
              name: "ERC1155TokenAdded";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  indexed: false;
                  name: "ids";
                  type: "uint256[]";
              }, {
                  indexed: false;
                  name: "amounts";
                  type: "uint256[]";
              }];
              name: "ERC1155TokenReady";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEPOSIT_BOX_MANAGER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "LINKER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc1155OnMainnet";
                  type: "address";
              }];
              name: "addERC1155TokenByOwner";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "contractReceiver";
                  type: "address";
              }];
              name: "addSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "contractManagerOfSkaleManager";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc1155OnMainnet";
                  type: "address";
              }, {
                  name: "id";
                  type: "uint256";
              }, {
                  name: "amount";
                  type: "uint256";
              }];
              name: "depositERC1155";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc1155OnMainnet";
                  type: "address";
              }, {
                  name: "ids";
                  type: "uint256[]";
              }, {
                  name: "amounts";
                  type: "uint256[]";
              }];
              name: "depositERC1155Batch";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc1155OnMainnet";
                  type: "address";
              }, {
                  name: "ids";
                  type: "uint256[]";
              }, {
                  name: "amounts";
                  type: "uint256[]";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "depositERC1155BatchDirect";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc1155OnMainnet";
                  type: "address";
              }, {
                  name: "id";
                  type: "uint256";
              }, {
                  name: "amount";
                  type: "uint256";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "depositERC1155Direct";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "disableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "enableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "gasPayer";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc1155OnMainnet";
                  type: "address";
              }, {
                  name: "receiver";
                  type: "address";
              }, {
                  name: "ids";
                  type: "uint256[]";
              }, {
                  name: "amounts";
                  type: "uint256[]";
              }];
              name: "getFunds";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "from";
                  type: "uint256";
              }, {
                  name: "to";
                  type: "uint256";
              }];
              name: "getSchainToAllERC1155";
              outputs: readonly [{
                  name: "tokensInRange";
                  type: "address[]";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "getSchainToAllERC1155Length";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc1155OnMainnet";
                  type: "address";
              }];
              name: "getSchainToERC1155";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "hasSchainContract";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "newMessageProxy";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "linkerValue";
                  type: "address";
              }, {
                  name: "messageProxyValue";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newContractManagerOfSkaleManager";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }];
              name: "isAgentAuthorized";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "sender";
                  type: "address";
              }, {
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "isSchainOwner";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "isWhitelisted";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "linker";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "operator";
                  type: "address";
              }, {
                  name: "";
                  type: "address";
              }, {
                  name: "";
                  type: "uint256[]";
              }, {
                  name: "";
                  type: "uint256[]";
              }, {
                  name: "";
                  type: "bytes";
              }];
              name: "onERC1155BatchReceived";
              outputs: readonly [{
                  name: "";
                  type: "bytes4";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "operator";
                  type: "address";
              }, {
                  name: "";
                  type: "address";
              }, {
                  name: "";
                  type: "uint256";
              }, {
                  name: "";
                  type: "uint256";
              }, {
                  name: "";
                  type: "bytes";
              }];
              name: "onERC1155Received";
              outputs: readonly [{
                  name: "";
                  type: "bytes4";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "removeSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "schainLinks";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }, {
                  name: "";
                  type: "address";
              }, {
                  name: "";
                  type: "uint256";
              }];
              name: "transferredAmount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }];
          DEPOSIT_BOX_ERC20: readonly [{
              inputs: readonly [];
              name: "Empty";
              type: "error";
          }, {
              inputs: readonly [];
              name: "OutOfBounds";
              type: "error";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  indexed: false;
                  name: "oldValue";
                  type: "uint256";
              }, {
                  indexed: false;
                  name: "newValue";
                  type: "uint256";
              }];
              name: "ArbitrageDurationIsChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  indexed: false;
                  name: "oldValue";
                  type: "uint256";
              }, {
                  indexed: false;
                  name: "newValue";
                  type: "uint256";
              }];
              name: "BigTransferDelayIsChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "token";
                  type: "address";
              }, {
                  indexed: false;
                  name: "oldValue";
                  type: "uint256";
              }, {
                  indexed: false;
                  name: "newValue";
                  type: "uint256";
              }];
              name: "BigTransferThresholdIsChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "schainName";
                  type: "string";
              }, {
                  indexed: true;
                  name: "contractOnMainnet";
                  type: "address";
              }];
              name: "ERC20TokenAdded";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  indexed: false;
                  name: "amount";
                  type: "uint256";
              }];
              name: "ERC20TokenReady";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "id";
                  type: "uint256";
              }];
              name: "Escalated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "id";
                  type: "uint256";
              }, {
                  indexed: false;
                  name: "receiver";
                  type: "address";
              }, {
                  indexed: false;
                  name: "token";
                  type: "address";
              }, {
                  indexed: false;
                  name: "amount";
                  type: "uint256";
              }];
              name: "TransferDelayed";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "id";
                  type: "uint256";
              }];
              name: "TransferSkipped";
              type: "event";
          }, {
              constant: true;
              inputs: readonly [];
              name: "ARBITER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEPOSIT_BOX_MANAGER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "LINKER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc20OnMainnet";
                  type: "address";
              }];
              name: "addERC20TokenByOwner";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "contractReceiver";
                  type: "address";
              }];
              name: "addSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "contractManagerOfSkaleManager";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              name: "delayedTransfers";
              outputs: readonly [{
                  name: "receiver";
                  type: "address";
              }, {
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "token";
                  type: "address";
              }, {
                  name: "amount";
                  type: "uint256";
              }, {
                  name: "untilTimestamp";
                  type: "uint256";
              }, {
                  name: "status";
                  type: "uint8";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "address";
              }];
              name: "delayedTransfersByReceiver";
              outputs: readonly [{
                  name: "_begin";
                  type: "int128";
              }, {
                  name: "_end";
                  type: "int128";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "delayedTransfersSize";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc20OnMainnet";
                  type: "address";
              }, {
                  name: "amount";
                  type: "uint256";
              }];
              name: "depositERC20";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc20OnMainnet";
                  type: "address";
              }, {
                  name: "amount";
                  type: "uint256";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "depositERC20Direct";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "disableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "token";
                  type: "address";
              }, {
                  name: "receiver";
                  type: "address";
              }, {
                  name: "amount";
                  type: "uint256";
              }];
              name: "doTransfer";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "enableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "transferId";
                  type: "uint256";
              }];
              name: "escalate";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "gasPayer";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "getArbitrageDuration";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "token";
                  type: "address";
              }];
              name: "getBigTransferThreshold";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "receiver";
                  type: "address";
              }, {
                  name: "token";
                  type: "address";
              }];
              name: "getDelayedAmount";
              outputs: readonly [{
                  name: "value";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc20OnMainnet";
                  type: "address";
              }, {
                  name: "receiver";
                  type: "address";
              }, {
                  name: "amount";
                  type: "uint256";
              }];
              name: "getFunds";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "receiver";
                  type: "address";
              }, {
                  name: "token";
                  type: "address";
              }];
              name: "getNextUnlockTimestamp";
              outputs: readonly [{
                  name: "unlockTimestamp";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "from";
                  type: "uint256";
              }, {
                  name: "to";
                  type: "uint256";
              }];
              name: "getSchainToAllERC20";
              outputs: readonly [{
                  name: "tokensInRange";
                  type: "address[]";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "getSchainToAllERC20Length";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc20OnMainnet";
                  type: "address";
              }];
              name: "getSchainToERC20";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "getTimeDelay";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "index";
                  type: "uint256";
              }];
              name: "getTrustedReceiver";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "getTrustedReceiversAmount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "hasSchainContract";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "newMessageProxy";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "linkerValue";
                  type: "address";
              }, {
                  name: "messageProxyValue";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newContractManagerOfSkaleManager";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }];
              name: "isAgentAuthorized";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "isReceiverTrusted";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "sender";
                  type: "address";
              }, {
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "isSchainOwner";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "isWhitelisted";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "linker";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "transferId";
                  type: "uint256";
              }];
              name: "rejectTransfer";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "removeSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [];
              name: "retrieve";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "receiver";
                  type: "address";
              }];
              name: "retrieveFor";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "schainLinks";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "delayInSeconds";
                  type: "uint256";
              }];
              name: "setArbitrageDuration";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "delayInSeconds";
                  type: "uint256";
              }];
              name: "setBigTransferDelay";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "token";
                  type: "address";
              }, {
                  name: "value";
                  type: "uint256";
              }];
              name: "setBigTransferValue";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "stopTrustingReceiver";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }, {
                  name: "";
                  type: "address";
              }];
              name: "transferredAmount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "trustReceiver";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "transferId";
                  type: "uint256";
              }];
              name: "validateTransfer";
              outputs: readonly [];
              payable: false;
              type: "function";
          }];
          DEPOSIT_BOX_ERC721: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "schainName";
                  type: "string";
              }, {
                  indexed: true;
                  name: "contractOnMainnet";
                  type: "address";
              }];
              name: "ERC721TokenAdded";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  indexed: false;
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "ERC721TokenReady";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEPOSIT_BOX_MANAGER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "LINKER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }];
              name: "addERC721TokenByOwner";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "contractReceiver";
                  type: "address";
              }];
              name: "addSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "contractManagerOfSkaleManager";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "depositERC721";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "depositERC721Direct";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "disableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "enableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "gasPayer";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }, {
                  name: "receiver";
                  type: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "getFunds";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "from";
                  type: "uint256";
              }, {
                  name: "to";
                  type: "uint256";
              }];
              name: "getSchainToAllERC721";
              outputs: readonly [{
                  name: "tokensInRange";
                  type: "address[]";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "getSchainToAllERC721Length";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }];
              name: "getSchainToERC721";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "hasSchainContract";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "newMessageProxy";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "linkerValue";
                  type: "address";
              }, {
                  name: "messageProxyValue";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newContractManagerOfSkaleManager";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }];
              name: "isAgentAuthorized";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "sender";
                  type: "address";
              }, {
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "isSchainOwner";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "isWhitelisted";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "linker";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "removeSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "schainLinks";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "address";
              }, {
                  name: "";
                  type: "uint256";
              }];
              name: "transferredAmount";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }];
          DEPOSIT_BOX_ERC721_WITH_METADATA: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "schainName";
                  type: "string";
              }, {
                  indexed: true;
                  name: "contractOnMainnet";
                  type: "address";
              }];
              name: "ERC721TokenAdded";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  indexed: false;
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "ERC721TokenReady";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEPOSIT_BOX_MANAGER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "LINKER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }];
              name: "addERC721TokenByOwner";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "contractReceiver";
                  type: "address";
              }];
              name: "addSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "contractManagerOfSkaleManager";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "depositERC721";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "depositERC721Direct";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "disableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "enableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "gasPayer";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }, {
                  name: "receiver";
                  type: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "getFunds";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "from";
                  type: "uint256";
              }, {
                  name: "to";
                  type: "uint256";
              }];
              name: "getSchainToAllERC721";
              outputs: readonly [{
                  name: "tokensInRange";
                  type: "address[]";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "getSchainToAllERC721Length";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }];
              name: "getSchainToERC721";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "hasSchainContract";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "newMessageProxy";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "linkerValue";
                  type: "address";
              }, {
                  name: "messageProxyValue";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newContractManagerOfSkaleManager";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }];
              name: "isAgentAuthorized";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "sender";
                  type: "address";
              }, {
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "isSchainOwner";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "isWhitelisted";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "linker";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "removeSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "schainLinks";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "address";
              }, {
                  name: "";
                  type: "uint256";
              }];
              name: "transferredAmount";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }];
          DEPOSIT_BOX_ETH: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  indexed: false;
                  name: "active";
                  type: "bool";
              }];
              name: "ActiveEthTransfers";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEPOSIT_BOX_MANAGER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "LINKER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "activeEthTransfers";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "contractReceiver";
                  type: "address";
              }];
              name: "addSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "address";
              }];
              name: "approveTransfers";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "contractManagerOfSkaleManager";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "deposit";
              outputs: readonly [];
              payable: true;
              stateMutability: "payable";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "depositDirect";
              outputs: readonly [];
              payable: true;
              stateMutability: "payable";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "disableActiveEthTransfers";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "disableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "enableActiveEthTransfers";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "enableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "gasPayer";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "receiver";
                  type: "address";
              }, {
                  name: "amount";
                  type: "uint256";
              }];
              name: "getFunds";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [];
              name: "getMyEth";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "hasSchainContract";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "newMessageProxy";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "linkerValue";
                  type: "address";
              }, {
                  name: "messageProxyValue";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newContractManagerOfSkaleManager";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }];
              name: "isAgentAuthorized";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "sender";
                  type: "address";
              }, {
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "isSchainOwner";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "isWhitelisted";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "linker";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "removeSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "schainLinks";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "transferredAmount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }];
          FILESTORAGE: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              inputs: readonly [];
              name: "ALLOCATOR_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "EMPTY_INDEX";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAX_BLOCK_COUNT";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAX_FILESIZE";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MEGABYTE";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "STORAGE_SPACE_SLOT";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "uint256";
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes4";
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "userAddress";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "reservedSpace";
                  type: "uint256";
              }];
              name: "reserveSpace";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "directoryPath";
                  type: "string";
              }];
              name: "createDirectory";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "directoryPath";
                  type: "string";
              }];
              name: "deleteDirectory";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "filePath";
                  type: "string";
              }, {
                  internalType: "uint256";
                  name: "fileSize";
                  type: "uint256";
              }];
              name: "startUpload";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "filePath";
                  type: "string";
              }, {
                  internalType: "uint256";
                  name: "position";
                  type: "uint256";
              }, {
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "uploadChunk";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "filePath";
                  type: "string";
              }];
              name: "finishUpload";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "filePath";
                  type: "string";
              }];
              name: "deleteFile";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "storagePath";
                  type: "string";
              }, {
                  internalType: "uint256";
                  name: "position";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "length";
                  type: "uint256";
              }];
              name: "readChunk";
              outputs: readonly [{
                  internalType: "bytes32[32768]";
                  name: "chunk";
                  type: "bytes32[32768]";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "storagePath";
                  type: "string";
              }];
              name: "listDirectory";
              outputs: readonly [{
                  components: readonly [{
                      internalType: "string";
                      name: "name";
                      type: "string";
                  }, {
                      internalType: "bool";
                      name: "isFile";
                      type: "bool";
                  }, {
                      internalType: "uint256";
                      name: "size";
                      type: "uint256";
                  }, {
                      internalType: "enum FileStorage.FileStatus";
                      name: "status";
                      type: "uint8";
                  }, {
                      internalType: "bool[]";
                      name: "isChunkUploaded";
                      type: "bool[]";
                  }];
                  internalType: "struct FileStorage.ContentInfo[]";
                  name: "";
                  type: "tuple[]";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "storagePath";
                  type: "string";
              }];
              name: "getFileStatus";
              outputs: readonly [{
                  internalType: "enum FileStorage.FileStatus";
                  name: "";
                  type: "uint8";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "storagePath";
                  type: "string";
              }];
              name: "getFileSize";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "fileSize";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getTotalStorageSpace";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getTotalReservedSpace";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "owner";
                  type: "address";
              }];
              name: "getReservedSpace";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "owner";
                  type: "address";
              }];
              name: "getOccupiedSpace";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getMaxContentCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getMaxChunkSize";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }];
          LINKER: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "LINKER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "contractReceiver";
                  type: "address";
              }];
              name: "addSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "schainContracts";
                  type: "address[]";
              }];
              name: "connectSchain";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "contractManagerOfSkaleManager";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "disconnectSchain";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "mainnetContract";
                  type: "address";
              }];
              name: "hasMainnetContract";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "hasSchain";
              outputs: readonly [{
                  name: "connected";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "hasSchainContract";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "messageProxyValue";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newContractManagerOfSkaleManager";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }];
              name: "isAgentAuthorized";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "isNotKilled";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "sender";
                  type: "address";
              }, {
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "isSchainOwner";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "kill";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newMainnetContract";
                  type: "address";
              }];
              name: "registerMainnetContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "mainnetContract";
                  type: "address";
              }];
              name: "removeMainnetContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "removeSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "schainLinks";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "statuses";
              outputs: readonly [{
                  name: "";
                  type: "uint8";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }];
          MARIONETTE: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "amount";
                  type: "uint256";
              }];
              name: "EtherReceived";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "receiver";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "amount";
                  type: "uint256";
              }];
              name: "EtherSent";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "bytes";
                  name: "output";
                  type: "bytes";
              }];
              name: "FunctionCallResult";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint8";
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              inputs: readonly [];
              name: "ACCESS_VIOLATION";
              outputs: readonly [{
                  internalType: "string";
                  name: "";
                  type: "string";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "IMA_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "PUPPETEER_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "receiver";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "value";
                  type: "uint256";
              }, {
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "encodeFunctionCall";
              outputs: readonly [{
                  internalType: "bytes";
                  name: "";
                  type: "bytes";
              }];
              stateMutability: "pure";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address payable";
                  name: "target";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "value";
                  type: "uint256";
              }, {
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "execute";
              outputs: readonly [{
                  internalType: "bytes";
                  name: "";
                  type: "bytes";
              }];
              stateMutability: "payable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "uint256";
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "owner";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "ima";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }, {
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address payable";
                  name: "target";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "value";
                  type: "uint256";
              }];
              name: "sendSFuel";
              outputs: readonly [];
              stateMutability: "payable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes4";
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              stateMutability: "payable";
              type: "receive";
          }];
          MULTISIG_WALLET: readonly [{
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              name: "owners";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "owner";
                  type: "address";
              }];
              name: "removeOwner";
              outputs: readonly [];
              payable: false;
              stateMutability: "nonpayable";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "revokeConfirmation";
              outputs: readonly [];
              payable: false;
              stateMutability: "nonpayable";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "address";
              }];
              name: "isOwner";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "uint256";
              }, {
                  name: "";
                  type: "address";
              }];
              name: "confirmations";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "calcMaxWithdraw";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "pending";
                  type: "bool";
              }, {
                  name: "executed";
                  type: "bool";
              }];
              name: "getTransactionCount";
              outputs: readonly [{
                  name: "count";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "dailyLimit";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "lastDay";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "owner";
                  type: "address";
              }];
              name: "addOwner";
              outputs: readonly [];
              payable: false;
              stateMutability: "nonpayable";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "isConfirmed";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "getConfirmationCount";
              outputs: readonly [{
                  name: "count";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              name: "transactions";
              outputs: readonly [{
                  name: "destination";
                  type: "address";
              }, {
                  name: "value";
                  type: "uint256";
              }, {
                  name: "data";
                  type: "bytes";
              }, {
                  name: "executed";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "getOwners";
              outputs: readonly [{
                  name: "";
                  type: "address[]";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "from";
                  type: "uint256";
              }, {
                  name: "to";
                  type: "uint256";
              }, {
                  name: "pending";
                  type: "bool";
              }, {
                  name: "executed";
                  type: "bool";
              }];
              name: "getTransactionIds";
              outputs: readonly [{
                  name: "_transactionIds";
                  type: "uint256[]";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "getConfirmations";
              outputs: readonly [{
                  name: "_confirmations";
                  type: "address[]";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "transactionCount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "_required";
                  type: "uint256";
              }];
              name: "changeRequirement";
              outputs: readonly [];
              payable: false;
              stateMutability: "nonpayable";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "confirmTransaction";
              outputs: readonly [];
              payable: false;
              stateMutability: "nonpayable";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "destination";
                  type: "address";
              }, {
                  name: "value";
                  type: "uint256";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "submitTransaction";
              outputs: readonly [{
                  name: "transactionId";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "nonpayable";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "_dailyLimit";
                  type: "uint256";
              }];
              name: "changeDailyLimit";
              outputs: readonly [];
              payable: false;
              stateMutability: "nonpayable";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "MAX_OWNER_COUNT";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "required";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "owner";
                  type: "address";
              }, {
                  name: "newOwner";
                  type: "address";
              }];
              name: "replaceOwner";
              outputs: readonly [];
              payable: false;
              stateMutability: "nonpayable";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "executeTransaction";
              outputs: readonly [];
              payable: false;
              stateMutability: "nonpayable";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "spentToday";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  name: "_owners";
                  type: "address[]";
              }, {
                  name: "_required";
                  type: "uint256";
              }, {
                  name: "_dailyLimit";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "nonpayable";
              type: "constructor";
          }, {
              payable: true;
              stateMutability: "payable";
              type: "fallback";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "dailyLimit";
                  type: "uint256";
              }];
              name: "DailyLimitChange";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "sender";
                  type: "address";
              }, {
                  indexed: true;
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "Confirmation";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "sender";
                  type: "address";
              }, {
                  indexed: true;
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "Revocation";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "Submission";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "Execution";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "ExecutionFailure";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "sender";
                  type: "address";
              }, {
                  indexed: false;
                  name: "value";
                  type: "uint256";
              }];
              name: "Deposit";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "owner";
                  type: "address";
              }];
              name: "OwnerAddition";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "owner";
                  type: "address";
              }];
              name: "OwnerRemoval";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "required";
                  type: "uint256";
              }];
              name: "RequirementChange";
              type: "event";
          }];
          TOKEN_MANAGER_ERC1155: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "oldValue";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "newValue";
                  type: "address";
              }];
              name: "DepositBoxWasChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc1155OnMainnet";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc1155OnSchain";
                  type: "address";
              }];
              name: "ERC1155TokenAdded";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc1155OnMainnet";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc1155OnSchain";
                  type: "address";
              }];
              name: "ERC1155TokenCreated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256[]";
                  name: "ids";
                  type: "uint256[]";
              }, {
                  indexed: false;
                  internalType: "uint256[]";
                  name: "amounts";
                  type: "uint256[]";
              }];
              name: "ERC1155TokenReady";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc1155OnMainnet";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc1155OnSchain";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256[]";
                  name: "ids";
                  type: "uint256[]";
              }, {
                  indexed: false;
                  internalType: "uint256[]";
                  name: "amounts";
                  type: "uint256[]";
              }];
              name: "ERC1155TokenReceived";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint8";
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              inputs: readonly [];
              name: "AUTOMATIC_DEPLOY_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_HASH";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_NAME";
              outputs: readonly [{
                  internalType: "string";
                  name: "";
                  type: "string";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "TOKEN_REGISTRAR_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "targetChainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "erc1155OnMainnet";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "erc1155OnSchain";
                  type: "address";
              }];
              name: "addERC1155TokenByOwner";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "newTokenManager";
                  type: "address";
              }];
              name: "addTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "contract ERC1155OnChain";
                  name: "";
                  type: "address";
              }];
              name: "addedClones";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "automaticDeploy";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "changeDepositBoxAddress";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "clonesErc1155";
              outputs: readonly [{
                  internalType: "contract ERC1155OnChain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "communityLocker";
              outputs: readonly [{
                  internalType: "contract ICommunityLocker";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "depositBox";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "deprecatedClonesErc1155";
              outputs: readonly [{
                  internalType: "contract ERC1155OnChain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "disableAutomaticDeploy";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "enableAutomaticDeploy";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "id";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "amount";
                  type: "uint256";
              }];
              name: "exitToMainERC1155";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  internalType: "uint256[]";
                  name: "ids";
                  type: "uint256[]";
              }, {
                  internalType: "uint256[]";
                  name: "amounts";
                  type: "uint256[]";
              }];
              name: "exitToMainERC1155Batch";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "uint256";
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "hasTokenManager";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "newChainName";
                  type: "string";
              }, {
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxy";
                  type: "address";
              }, {
                  internalType: "contract ITokenManagerLinker";
                  name: "newIMALinker";
                  type: "address";
              }, {
                  internalType: "contract ICommunityLocker";
                  name: "newCommunityLocker";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "newSchainName";
                  type: "string";
              }, {
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxy";
                  type: "address";
              }, {
                  internalType: "contract ITokenManagerLinker";
                  name: "newIMALinker";
                  type: "address";
              }, {
                  internalType: "contract ICommunityLocker";
                  name: "newCommunityLocker";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "initializeTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  internalType: "contract IMessageProxyForSchain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "operator";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "";
                  type: "address";
              }, {
                  internalType: "uint256[]";
                  name: "";
                  type: "uint256[]";
              }, {
                  internalType: "uint256[]";
                  name: "";
                  type: "uint256[]";
              }, {
                  internalType: "bytes";
                  name: "";
                  type: "bytes";
              }];
              name: "onERC1155BatchReceived";
              outputs: readonly [{
                  internalType: "bytes4";
                  name: "";
                  type: "bytes4";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "operator";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }, {
                  internalType: "bytes";
                  name: "";
                  type: "bytes";
              }];
              name: "onERC1155Received";
              outputs: readonly [{
                  internalType: "bytes4";
                  name: "";
                  type: "bytes4";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "fromChainHash";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }, {
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "removeTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "schainHash";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes4";
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "tokenManagerLinker";
              outputs: readonly [{
                  internalType: "contract ITokenManagerLinker";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              name: "tokenManagers";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "targetSchainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "id";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "amount";
                  type: "uint256";
              }];
              name: "transferToSchainERC1155";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "targetSchainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  internalType: "uint256[]";
                  name: "ids";
                  type: "uint256[]";
              }, {
                  internalType: "uint256[]";
                  name: "amounts";
                  type: "uint256[]";
              }];
              name: "transferToSchainERC1155Batch";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              name: "transferredAmount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }];
          TOKEN_MANAGER_ERC20: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "oldValue";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "newValue";
                  type: "address";
              }];
              name: "DepositBoxWasChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc20OnMainChain";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc20OnSchain";
                  type: "address";
              }];
              name: "ERC20TokenAdded";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc20OnMainChain";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc20OnSchain";
                  type: "address";
              }];
              name: "ERC20TokenCreated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "amount";
                  type: "uint256";
              }];
              name: "ERC20TokenReady";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc20OnMainChain";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc20OnSchain";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "amount";
                  type: "uint256";
              }];
              name: "ERC20TokenReceived";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint8";
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              inputs: readonly [];
              name: "AUTOMATIC_DEPLOY_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_HASH";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_NAME";
              outputs: readonly [{
                  internalType: "string";
                  name: "";
                  type: "string";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "TOKEN_REGISTRAR_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "targetChainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "erc20OnMainChain";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "erc20OnSchain";
                  type: "address";
              }];
              name: "addERC20TokenByOwner";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "newTokenManager";
                  type: "address";
              }];
              name: "addTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "contract ERC20OnChain";
                  name: "";
                  type: "address";
              }];
              name: "addedClones";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "automaticDeploy";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "changeDepositBoxAddress";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "clonesErc20";
              outputs: readonly [{
                  internalType: "contract ERC20OnChain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "communityLocker";
              outputs: readonly [{
                  internalType: "contract ICommunityLocker";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "depositBox";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "deprecatedClonesErc20";
              outputs: readonly [{
                  internalType: "contract ERC20OnChain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "disableAutomaticDeploy";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "enableAutomaticDeploy";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "amount";
                  type: "uint256";
              }];
              name: "exitToMainERC20";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "uint256";
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "hasTokenManager";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "newChainName";
                  type: "string";
              }, {
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxy";
                  type: "address";
              }, {
                  internalType: "contract ITokenManagerLinker";
                  name: "newIMALinker";
                  type: "address";
              }, {
                  internalType: "contract ICommunityLocker";
                  name: "newCommunityLocker";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "newSchainName";
                  type: "string";
              }, {
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxy";
                  type: "address";
              }, {
                  internalType: "contract ITokenManagerLinker";
                  name: "newIMALinker";
                  type: "address";
              }, {
                  internalType: "contract ICommunityLocker";
                  name: "newCommunityLocker";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "initializeTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  internalType: "contract IMessageProxyForSchain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "fromChainHash";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }, {
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "removeTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "schainHash";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes4";
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "tokenManagerLinker";
              outputs: readonly [{
                  internalType: "contract ITokenManagerLinker";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              name: "tokenManagers";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "contract IERC20Upgradeable";
                  name: "";
                  type: "address";
              }];
              name: "totalSupplyOnMainnet";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "targetSchainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "amount";
                  type: "uint256";
              }];
              name: "transferToSchainERC20";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "transferredAmount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }];
          TOKEN_MANAGER_ERC721: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "oldValue";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "newValue";
                  type: "address";
              }];
              name: "DepositBoxWasChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc721OnMainChain";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc721OnSchain";
                  type: "address";
              }];
              name: "ERC721TokenAdded";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc721OnMainChain";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc721OnSchain";
                  type: "address";
              }];
              name: "ERC721TokenCreated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "ERC721TokenReady";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc721OnMainChain";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc721OnSchain";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "ERC721TokenReceived";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint8";
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              inputs: readonly [];
              name: "AUTOMATIC_DEPLOY_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_HASH";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_NAME";
              outputs: readonly [{
                  internalType: "string";
                  name: "";
                  type: "string";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "TOKEN_REGISTRAR_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "targetChainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "erc721OnMainChain";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "erc721OnSchain";
                  type: "address";
              }];
              name: "addERC721TokenByOwner";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "newTokenManager";
                  type: "address";
              }];
              name: "addTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "contract ERC721OnChain";
                  name: "";
                  type: "address";
              }];
              name: "addedClones";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "automaticDeploy";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "changeDepositBoxAddress";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "clonesErc721";
              outputs: readonly [{
                  internalType: "contract ERC721OnChain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "communityLocker";
              outputs: readonly [{
                  internalType: "contract ICommunityLocker";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "depositBox";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "deprecatedClonesErc721";
              outputs: readonly [{
                  internalType: "contract ERC721OnChain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "disableAutomaticDeploy";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "enableAutomaticDeploy";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "exitToMainERC721";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "uint256";
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "hasTokenManager";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "newChainName";
                  type: "string";
              }, {
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxy";
                  type: "address";
              }, {
                  internalType: "contract ITokenManagerLinker";
                  name: "newIMALinker";
                  type: "address";
              }, {
                  internalType: "contract ICommunityLocker";
                  name: "newCommunityLocker";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "newSchainName";
                  type: "string";
              }, {
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxy";
                  type: "address";
              }, {
                  internalType: "contract ITokenManagerLinker";
                  name: "newIMALinker";
                  type: "address";
              }, {
                  internalType: "contract ICommunityLocker";
                  name: "newCommunityLocker";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "initializeTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  internalType: "contract IMessageProxyForSchain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "fromChainHash";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }, {
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "removeTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "schainHash";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes4";
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "tokenManagerLinker";
              outputs: readonly [{
                  internalType: "contract ITokenManagerLinker";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              name: "tokenManagers";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "targetSchainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "transferToSchainERC721";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              name: "transferredAmount";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }];
          TOKEN_MANAGER_ETH: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "oldValue";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "newValue";
                  type: "address";
              }];
              name: "DepositBoxWasChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint8";
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              inputs: readonly [];
              name: "AUTOMATIC_DEPLOY_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_HASH";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_NAME";
              outputs: readonly [{
                  internalType: "string";
                  name: "";
                  type: "string";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "TOKEN_REGISTRAR_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "newTokenManager";
                  type: "address";
              }];
              name: "addTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "automaticDeploy";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "changeDepositBoxAddress";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "communityLocker";
              outputs: readonly [{
                  internalType: "contract ICommunityLocker";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "depositBox";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "disableAutomaticDeploy";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "enableAutomaticDeploy";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "ethErc20";
              outputs: readonly [{
                  internalType: "contract IEthErc20";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "amount";
                  type: "uint256";
              }];
              name: "exitToMain";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "uint256";
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "hasTokenManager";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "newChainName";
                  type: "string";
              }, {
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxy";
                  type: "address";
              }, {
                  internalType: "contract ITokenManagerLinker";
                  name: "newIMALinker";
                  type: "address";
              }, {
                  internalType: "contract ICommunityLocker";
                  name: "newCommunityLocker";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }, {
                  internalType: "contract IEthErc20";
                  name: "ethErc20Address";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "newSchainName";
                  type: "string";
              }, {
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxy";
                  type: "address";
              }, {
                  internalType: "contract ITokenManagerLinker";
                  name: "newIMALinker";
                  type: "address";
              }, {
                  internalType: "contract ICommunityLocker";
                  name: "newCommunityLocker";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "initializeTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  internalType: "contract IMessageProxyForSchain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "fromChainHash";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }, {
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "removeTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "schainHash";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "contract IEthErc20";
                  name: "newEthErc20Address";
                  type: "address";
              }];
              name: "setEthErc20Address";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes4";
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "tokenManagerLinker";
              outputs: readonly [{
                  internalType: "contract ITokenManagerLinker";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              name: "tokenManagers";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }];
          TOKEN_MANAGER_LINKER: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint8";
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_HASH";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_NAME";
              outputs: readonly [{
                  internalType: "string";
                  name: "";
                  type: "string";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "REGISTRAR_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "connectSchain";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "disconnectSchain";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "uint256";
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "hasSchain";
              outputs: readonly [{
                  internalType: "bool";
                  name: "connected";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "tokenManager";
                  type: "address";
              }];
              name: "hasTokenManager";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxyAddress";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "linker";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "linkerAddress";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  internalType: "contract IMessageProxyForSchain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "contract ITokenManager";
                  name: "newTokenManager";
                  type: "address";
              }];
              name: "registerTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "contract ITokenManager";
                  name: "tokenManagerAddress";
                  type: "address";
              }];
              name: "removeTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes4";
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              name: "tokenManagers";
              outputs: readonly [{
                  internalType: "contract ITokenManager";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }];
      }[`TOKEN_MANAGER_${T}`]
    • Optional address?: {
          COMMUNITY_LOCKER: {
              address: "0xD2aaa00300000000000000000000000000000000";
              key: "schain:community:locker";
              name: "CommunityLocker";
              network: "skale";
              type: "sudo";
          };
          COMMUNITY_POOL: {
              address: "0x588801cA36558310D91234aFC2511502282b1621";
              key: "foreign:community:pool";
              name: "CommunityPool";
              network: "homestead";
              type: "sudo";
          };
          CONFIG_CONTROLLER: {
              address: "0xD2002000000000000000000000000000000000D2";
              key: "schain:config_controller";
              name: "ConfigController";
              network: "skale";
              type: "sudo";
          };
          DEPOSIT_BOX_ERC1155: {
              address: "0x3C02FdEe8E05B6dc4d44a6555b3ff5762D03871a";
              key: "foreign:depositbox:erc1155";
              name: "DepositBoxERC1155";
              network: "homestead";
              type: "ima:bridge";
          };
          DEPOSIT_BOX_ERC20: {
              address: "0x8fB1A35bB6fB9c47Fb5065BE5062cB8dC1687669";
              key: "foreign:depositbox:erc20";
              name: "DepositBoxERC20";
              network: "homestead";
              type: "ima:bridge";
          };
          DEPOSIT_BOX_ERC721: {
              address: "0x7343d31eb99Fd31424bcca9f0a7EAFBc1F515f2d";
              key: "foreign:depositbox:erc721";
              name: "DepositBoxERC721";
              network: "homestead";
              type: "ima:bridge";
          };
          DEPOSIT_BOX_ERC721_WITH_METADATA: {
              address: "0x9f8196D864ee9476bF8DBE68aD07cc555d6B7986";
              key: "foreign:depositbox:erc721_with_metadata";
              name: "DepositBoxERC721";
              network: "homestead";
              type: "ima:bridge";
          };
          DEPOSIT_BOX_ETH: {
              address: "0x9910cF6ba22915C5afCe8b682f7c09d1c001FA59";
              key: "foreign:depositbox:eth";
              name: "DepositBoxEth";
              network: "homestead";
              type: "ima:bridge";
          };
          FILESTORAGE: {
              address: "0xD3002000000000000000000000000000000000d3";
              key: "schain:filestorage";
              name: "FileStorage";
              network: "skale";
              type: "storage";
          };
          LINKER: {
              address: "0x6ef406953bac772C2146389ED37846BA3b6086D1";
              key: "foreign:linker";
              name: "Linker";
              network: "homestead";
              type: "ima:bridge";
          };
          MARIONETTE: {
              address: "0xD2c0DeFACe000000000000000000000000000000";
              key: "schain:marionette";
              name: "Marionette";
              network: "skale";
              type: "sudo";
          };
          MULTISIG_WALLET: {
              address: "0xD244519000000000000000000000000000000000";
              key: "schain:multisig_wallet";
              name: "MultiSigWallet";
              network: "skale";
              type: "sudo";
          };
          TOKEN_MANAGER_ERC1155: {
              address: "0xD2aaA00900000000000000000000000000000000";
              key: "schain:tokenmanager:erc1155";
              name: "TokenManagerERC1155";
              network: "skale";
              type: "ima:bridge";
          };
          TOKEN_MANAGER_ERC20: {
              address: "0xD2aAA00500000000000000000000000000000000";
              key: "schain:tokenmanager:erc20";
              name: "TokenManagerERC20";
              network: "skale";
              type: "ima:bridge";
          };
          TOKEN_MANAGER_ERC721: {
              address: "0xD2aaa00600000000000000000000000000000000";
              key: "schain:tokenmanager:erc721";
              name: "TokenManagerERC721";
              network: "skale";
              type: "ima:bridge";
          };
          TOKEN_MANAGER_ETH: {
              address: "0xd2AaA00400000000000000000000000000000000";
              key: "schain:tokenmanager:eth";
              name: "TokenManagerEth";
              network: "skale";
              type: "ima:bridge";
          };
          TOKEN_MANAGER_LINKER: {
              address: "0xD2aAA00800000000000000000000000000000000";
              key: "schain:tokenmanager:linker";
              name: "TokenManagerLinker";
              network: "skale";
              type: "ima:bridge";
          };
      }[`TOKEN_MANAGER_${T}`]["address"]
    • Optional contract?: null | GetContractResult<{
          COMMUNITY_LOCKER: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "bytes32";
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "user";
                  type: "address";
              }];
              name: "ActivateUser";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "constantHash";
                  type: "bytes32";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "previousValue";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "newValue";
                  type: "uint256";
              }];
              name: "ConstantUpdated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint8";
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "bytes32";
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "user";
                  type: "address";
              }];
              name: "LockUser";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              inputs: readonly [];
              name: "CONSTANT_SETTER_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_HASH";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_NAME";
              outputs: readonly [{
                  internalType: "string";
                  name: "";
                  type: "string";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "activeUsers";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "receiver";
                  type: "address";
              }];
              name: "checkAllowedToSendMessage";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "communityPool";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "gasPriceTimestamp";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "uint256";
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "newSchainName";
                  type: "string";
              }, {
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxy";
                  type: "address";
              }, {
                  internalType: "contract ITokenManagerLinker";
                  name: "newTokenManagerLinker";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "newCommunityPool";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "initializeTimestamp";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "lastMessageTimeStamp";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "lastMessageTimeStampToSchain";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "mainnetGasPrice";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  internalType: "contract IMessageProxyForSchain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "fromChainHash";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }, {
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "schainHash";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "gasPrice";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "timestamp";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "uint256[2]";
                      name: "blsSignature";
                      type: "uint256[2]";
                  }, {
                      internalType: "uint256";
                      name: "hashA";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "hashB";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "counter";
                      type: "uint256";
                  }];
                  internalType: "struct IMessageProxy.Signature";
                  name: "";
                  type: "tuple";
              }];
              name: "setGasPrice";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "chainName";
                  type: "string";
              }, {
                  internalType: "uint256";
                  name: "newTimeLimitPerMessage";
                  type: "uint256";
              }];
              name: "setTimeLimitPerMessage";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes4";
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              name: "timeLimitPerMessage";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "tokenManagerLinker";
              outputs: readonly [{
                  internalType: "contract ITokenManagerLinker";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }];
          COMMUNITY_POOL: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "oldValue";
                  type: "uint256";
              }, {
                  indexed: false;
                  name: "newValue";
                  type: "uint256";
              }];
              name: "MinTransactionGasWasChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "oldMultiplierNumerator";
                  type: "uint256";
              }, {
                  indexed: false;
                  name: "oldMultiplierDivider";
                  type: "uint256";
              }, {
                  indexed: false;
                  name: "newMultiplierNumerator";
                  type: "uint256";
              }, {
                  indexed: false;
                  name: "newMultiplierDivider";
                  type: "uint256";
              }];
              name: "MultiplierWasChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              constant: true;
              inputs: readonly [];
              name: "CONSTANT_SETTER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "LINKER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "address";
              }, {
                  name: "";
                  type: "bytes32";
              }];
              name: "activeUsers";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "contractReceiver";
                  type: "address";
              }];
              name: "addSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "checkUserBalance";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "contractManagerOfSkaleManager";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "user";
                  type: "address";
              }, {
                  name: "schainName";
                  type: "string";
              }];
              name: "getBalance";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "getRecommendedRechargeAmount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "hasSchainContract";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "newMessageProxy";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "linker";
                  type: "address";
              }, {
                  name: "messageProxyValue";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newContractManagerOfSkaleManager";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }];
              name: "isAgentAuthorized";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "sender";
                  type: "address";
              }, {
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "isSchainOwner";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "minTransactionGas";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "multiplierDivider";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "multiplierNumerator";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "user";
                  type: "address";
              }];
              name: "rechargeUserWallet";
              outputs: readonly [];
              payable: true;
              stateMutability: "payable";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "node";
                  type: "address";
              }, {
                  name: "gas";
                  type: "uint256";
              }];
              name: "refundGasBySchainWallet";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "node";
                  type: "address";
              }, {
                  name: "user";
                  type: "address";
              }, {
                  name: "gas";
                  type: "uint256";
              }];
              name: "refundGasByUser";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "removeSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "schainLinks";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newMinTransactionGas";
                  type: "uint256";
              }];
              name: "setMinTransactionGas";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newMultiplierNumerator";
                  type: "uint256";
              }, {
                  name: "newMultiplierDivider";
                  type: "uint256";
              }];
              name: "setMultiplier";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "amount";
                  type: "uint256";
              }];
              name: "withdrawFunds";
              outputs: readonly [];
              payable: false;
              type: "function";
          }];
          CONFIG_CONTROLLER: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "DEPLOYER_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "DEPLOYER_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MTM_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "addr";
                  type: "address";
              }];
              name: "addToWhitelist";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "disableFreeContractDeployment";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "disableMTM";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "enableFreeContractDeployment";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "enableMTM";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "uint256";
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "addr";
                  type: "address";
              }];
              name: "isAddressWhitelisted";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "isFCDEnabled";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "isMTMEnabled";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "addr";
                  type: "address";
              }];
              name: "removeFromWhitelist";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "_version";
                  type: "string";
              }];
              name: "setVersion";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes4";
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "version";
              outputs: readonly [{
                  internalType: "string";
                  name: "";
                  type: "string";
              }];
              stateMutability: "view";
              type: "function";
          }];
          DEPOSIT_BOX_ERC1155: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "schainName";
                  type: "string";
              }, {
                  indexed: true;
                  name: "contractOnMainnet";
                  type: "address";
              }];
              name: "ERC1155TokenAdded";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  indexed: false;
                  name: "ids";
                  type: "uint256[]";
              }, {
                  indexed: false;
                  name: "amounts";
                  type: "uint256[]";
              }];
              name: "ERC1155TokenReady";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEPOSIT_BOX_MANAGER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "LINKER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc1155OnMainnet";
                  type: "address";
              }];
              name: "addERC1155TokenByOwner";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "contractReceiver";
                  type: "address";
              }];
              name: "addSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "contractManagerOfSkaleManager";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc1155OnMainnet";
                  type: "address";
              }, {
                  name: "id";
                  type: "uint256";
              }, {
                  name: "amount";
                  type: "uint256";
              }];
              name: "depositERC1155";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc1155OnMainnet";
                  type: "address";
              }, {
                  name: "ids";
                  type: "uint256[]";
              }, {
                  name: "amounts";
                  type: "uint256[]";
              }];
              name: "depositERC1155Batch";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc1155OnMainnet";
                  type: "address";
              }, {
                  name: "ids";
                  type: "uint256[]";
              }, {
                  name: "amounts";
                  type: "uint256[]";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "depositERC1155BatchDirect";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc1155OnMainnet";
                  type: "address";
              }, {
                  name: "id";
                  type: "uint256";
              }, {
                  name: "amount";
                  type: "uint256";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "depositERC1155Direct";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "disableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "enableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "gasPayer";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc1155OnMainnet";
                  type: "address";
              }, {
                  name: "receiver";
                  type: "address";
              }, {
                  name: "ids";
                  type: "uint256[]";
              }, {
                  name: "amounts";
                  type: "uint256[]";
              }];
              name: "getFunds";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "from";
                  type: "uint256";
              }, {
                  name: "to";
                  type: "uint256";
              }];
              name: "getSchainToAllERC1155";
              outputs: readonly [{
                  name: "tokensInRange";
                  type: "address[]";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "getSchainToAllERC1155Length";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc1155OnMainnet";
                  type: "address";
              }];
              name: "getSchainToERC1155";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "hasSchainContract";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "newMessageProxy";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "linkerValue";
                  type: "address";
              }, {
                  name: "messageProxyValue";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newContractManagerOfSkaleManager";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }];
              name: "isAgentAuthorized";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "sender";
                  type: "address";
              }, {
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "isSchainOwner";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "isWhitelisted";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "linker";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "operator";
                  type: "address";
              }, {
                  name: "";
                  type: "address";
              }, {
                  name: "";
                  type: "uint256[]";
              }, {
                  name: "";
                  type: "uint256[]";
              }, {
                  name: "";
                  type: "bytes";
              }];
              name: "onERC1155BatchReceived";
              outputs: readonly [{
                  name: "";
                  type: "bytes4";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "operator";
                  type: "address";
              }, {
                  name: "";
                  type: "address";
              }, {
                  name: "";
                  type: "uint256";
              }, {
                  name: "";
                  type: "uint256";
              }, {
                  name: "";
                  type: "bytes";
              }];
              name: "onERC1155Received";
              outputs: readonly [{
                  name: "";
                  type: "bytes4";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "removeSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "schainLinks";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }, {
                  name: "";
                  type: "address";
              }, {
                  name: "";
                  type: "uint256";
              }];
              name: "transferredAmount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }];
          DEPOSIT_BOX_ERC20: readonly [{
              inputs: readonly [];
              name: "Empty";
              type: "error";
          }, {
              inputs: readonly [];
              name: "OutOfBounds";
              type: "error";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  indexed: false;
                  name: "oldValue";
                  type: "uint256";
              }, {
                  indexed: false;
                  name: "newValue";
                  type: "uint256";
              }];
              name: "ArbitrageDurationIsChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  indexed: false;
                  name: "oldValue";
                  type: "uint256";
              }, {
                  indexed: false;
                  name: "newValue";
                  type: "uint256";
              }];
              name: "BigTransferDelayIsChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "token";
                  type: "address";
              }, {
                  indexed: false;
                  name: "oldValue";
                  type: "uint256";
              }, {
                  indexed: false;
                  name: "newValue";
                  type: "uint256";
              }];
              name: "BigTransferThresholdIsChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "schainName";
                  type: "string";
              }, {
                  indexed: true;
                  name: "contractOnMainnet";
                  type: "address";
              }];
              name: "ERC20TokenAdded";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  indexed: false;
                  name: "amount";
                  type: "uint256";
              }];
              name: "ERC20TokenReady";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "id";
                  type: "uint256";
              }];
              name: "Escalated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "id";
                  type: "uint256";
              }, {
                  indexed: false;
                  name: "receiver";
                  type: "address";
              }, {
                  indexed: false;
                  name: "token";
                  type: "address";
              }, {
                  indexed: false;
                  name: "amount";
                  type: "uint256";
              }];
              name: "TransferDelayed";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "id";
                  type: "uint256";
              }];
              name: "TransferSkipped";
              type: "event";
          }, {
              constant: true;
              inputs: readonly [];
              name: "ARBITER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEPOSIT_BOX_MANAGER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "LINKER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc20OnMainnet";
                  type: "address";
              }];
              name: "addERC20TokenByOwner";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "contractReceiver";
                  type: "address";
              }];
              name: "addSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "contractManagerOfSkaleManager";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              name: "delayedTransfers";
              outputs: readonly [{
                  name: "receiver";
                  type: "address";
              }, {
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "token";
                  type: "address";
              }, {
                  name: "amount";
                  type: "uint256";
              }, {
                  name: "untilTimestamp";
                  type: "uint256";
              }, {
                  name: "status";
                  type: "uint8";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "address";
              }];
              name: "delayedTransfersByReceiver";
              outputs: readonly [{
                  name: "_begin";
                  type: "int128";
              }, {
                  name: "_end";
                  type: "int128";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "delayedTransfersSize";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc20OnMainnet";
                  type: "address";
              }, {
                  name: "amount";
                  type: "uint256";
              }];
              name: "depositERC20";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc20OnMainnet";
                  type: "address";
              }, {
                  name: "amount";
                  type: "uint256";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "depositERC20Direct";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "disableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "token";
                  type: "address";
              }, {
                  name: "receiver";
                  type: "address";
              }, {
                  name: "amount";
                  type: "uint256";
              }];
              name: "doTransfer";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "enableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "transferId";
                  type: "uint256";
              }];
              name: "escalate";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "gasPayer";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "getArbitrageDuration";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "token";
                  type: "address";
              }];
              name: "getBigTransferThreshold";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "receiver";
                  type: "address";
              }, {
                  name: "token";
                  type: "address";
              }];
              name: "getDelayedAmount";
              outputs: readonly [{
                  name: "value";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc20OnMainnet";
                  type: "address";
              }, {
                  name: "receiver";
                  type: "address";
              }, {
                  name: "amount";
                  type: "uint256";
              }];
              name: "getFunds";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "receiver";
                  type: "address";
              }, {
                  name: "token";
                  type: "address";
              }];
              name: "getNextUnlockTimestamp";
              outputs: readonly [{
                  name: "unlockTimestamp";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "from";
                  type: "uint256";
              }, {
                  name: "to";
                  type: "uint256";
              }];
              name: "getSchainToAllERC20";
              outputs: readonly [{
                  name: "tokensInRange";
                  type: "address[]";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "getSchainToAllERC20Length";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc20OnMainnet";
                  type: "address";
              }];
              name: "getSchainToERC20";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "getTimeDelay";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "index";
                  type: "uint256";
              }];
              name: "getTrustedReceiver";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "getTrustedReceiversAmount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "hasSchainContract";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "newMessageProxy";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "linkerValue";
                  type: "address";
              }, {
                  name: "messageProxyValue";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newContractManagerOfSkaleManager";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }];
              name: "isAgentAuthorized";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "isReceiverTrusted";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "sender";
                  type: "address";
              }, {
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "isSchainOwner";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "isWhitelisted";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "linker";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "transferId";
                  type: "uint256";
              }];
              name: "rejectTransfer";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "removeSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [];
              name: "retrieve";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "receiver";
                  type: "address";
              }];
              name: "retrieveFor";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "schainLinks";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "delayInSeconds";
                  type: "uint256";
              }];
              name: "setArbitrageDuration";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "delayInSeconds";
                  type: "uint256";
              }];
              name: "setBigTransferDelay";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "token";
                  type: "address";
              }, {
                  name: "value";
                  type: "uint256";
              }];
              name: "setBigTransferValue";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "stopTrustingReceiver";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }, {
                  name: "";
                  type: "address";
              }];
              name: "transferredAmount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "trustReceiver";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "transferId";
                  type: "uint256";
              }];
              name: "validateTransfer";
              outputs: readonly [];
              payable: false;
              type: "function";
          }];
          DEPOSIT_BOX_ERC721: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "schainName";
                  type: "string";
              }, {
                  indexed: true;
                  name: "contractOnMainnet";
                  type: "address";
              }];
              name: "ERC721TokenAdded";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  indexed: false;
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "ERC721TokenReady";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEPOSIT_BOX_MANAGER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "LINKER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }];
              name: "addERC721TokenByOwner";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "contractReceiver";
                  type: "address";
              }];
              name: "addSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "contractManagerOfSkaleManager";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "depositERC721";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "depositERC721Direct";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "disableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "enableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "gasPayer";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }, {
                  name: "receiver";
                  type: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "getFunds";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "from";
                  type: "uint256";
              }, {
                  name: "to";
                  type: "uint256";
              }];
              name: "getSchainToAllERC721";
              outputs: readonly [{
                  name: "tokensInRange";
                  type: "address[]";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "getSchainToAllERC721Length";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }];
              name: "getSchainToERC721";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "hasSchainContract";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "newMessageProxy";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "linkerValue";
                  type: "address";
              }, {
                  name: "messageProxyValue";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newContractManagerOfSkaleManager";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }];
              name: "isAgentAuthorized";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "sender";
                  type: "address";
              }, {
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "isSchainOwner";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "isWhitelisted";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "linker";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "removeSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "schainLinks";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "address";
              }, {
                  name: "";
                  type: "uint256";
              }];
              name: "transferredAmount";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }];
          DEPOSIT_BOX_ERC721_WITH_METADATA: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "schainName";
                  type: "string";
              }, {
                  indexed: true;
                  name: "contractOnMainnet";
                  type: "address";
              }];
              name: "ERC721TokenAdded";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  indexed: false;
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "ERC721TokenReady";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEPOSIT_BOX_MANAGER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "LINKER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }];
              name: "addERC721TokenByOwner";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "contractReceiver";
                  type: "address";
              }];
              name: "addSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "contractManagerOfSkaleManager";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "depositERC721";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "depositERC721Direct";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "disableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "enableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "gasPayer";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }, {
                  name: "receiver";
                  type: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "getFunds";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "from";
                  type: "uint256";
              }, {
                  name: "to";
                  type: "uint256";
              }];
              name: "getSchainToAllERC721";
              outputs: readonly [{
                  name: "tokensInRange";
                  type: "address[]";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "getSchainToAllERC721Length";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "erc721OnMainnet";
                  type: "address";
              }];
              name: "getSchainToERC721";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "hasSchainContract";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "newMessageProxy";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "linkerValue";
                  type: "address";
              }, {
                  name: "messageProxyValue";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newContractManagerOfSkaleManager";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }];
              name: "isAgentAuthorized";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "sender";
                  type: "address";
              }, {
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "isSchainOwner";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "isWhitelisted";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "linker";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "removeSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "schainLinks";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "address";
              }, {
                  name: "";
                  type: "uint256";
              }];
              name: "transferredAmount";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }];
          DEPOSIT_BOX_ETH: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  indexed: false;
                  name: "active";
                  type: "bool";
              }];
              name: "ActiveEthTransfers";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEPOSIT_BOX_MANAGER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "LINKER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "activeEthTransfers";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "contractReceiver";
                  type: "address";
              }];
              name: "addSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "address";
              }];
              name: "approveTransfers";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "contractManagerOfSkaleManager";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "deposit";
              outputs: readonly [];
              payable: true;
              stateMutability: "payable";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "receiver";
                  type: "address";
              }];
              name: "depositDirect";
              outputs: readonly [];
              payable: true;
              stateMutability: "payable";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "disableActiveEthTransfers";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "disableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "enableActiveEthTransfers";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "enableWhitelist";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "gasPayer";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "receiver";
                  type: "address";
              }, {
                  name: "amount";
                  type: "uint256";
              }];
              name: "getFunds";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [];
              name: "getMyEth";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "hasSchainContract";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "newMessageProxy";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "linkerValue";
                  type: "address";
              }, {
                  name: "messageProxyValue";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newContractManagerOfSkaleManager";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }];
              name: "isAgentAuthorized";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "sender";
                  type: "address";
              }, {
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "isSchainOwner";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "isWhitelisted";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "linker";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "removeSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "schainLinks";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "transferredAmount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }];
          FILESTORAGE: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              inputs: readonly [];
              name: "ALLOCATOR_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "EMPTY_INDEX";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAX_BLOCK_COUNT";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAX_FILESIZE";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MEGABYTE";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "STORAGE_SPACE_SLOT";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "uint256";
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes4";
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "userAddress";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "reservedSpace";
                  type: "uint256";
              }];
              name: "reserveSpace";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "directoryPath";
                  type: "string";
              }];
              name: "createDirectory";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "directoryPath";
                  type: "string";
              }];
              name: "deleteDirectory";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "filePath";
                  type: "string";
              }, {
                  internalType: "uint256";
                  name: "fileSize";
                  type: "uint256";
              }];
              name: "startUpload";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "filePath";
                  type: "string";
              }, {
                  internalType: "uint256";
                  name: "position";
                  type: "uint256";
              }, {
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "uploadChunk";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "filePath";
                  type: "string";
              }];
              name: "finishUpload";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "filePath";
                  type: "string";
              }];
              name: "deleteFile";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "storagePath";
                  type: "string";
              }, {
                  internalType: "uint256";
                  name: "position";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "length";
                  type: "uint256";
              }];
              name: "readChunk";
              outputs: readonly [{
                  internalType: "bytes32[32768]";
                  name: "chunk";
                  type: "bytes32[32768]";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "storagePath";
                  type: "string";
              }];
              name: "listDirectory";
              outputs: readonly [{
                  components: readonly [{
                      internalType: "string";
                      name: "name";
                      type: "string";
                  }, {
                      internalType: "bool";
                      name: "isFile";
                      type: "bool";
                  }, {
                      internalType: "uint256";
                      name: "size";
                      type: "uint256";
                  }, {
                      internalType: "enum FileStorage.FileStatus";
                      name: "status";
                      type: "uint8";
                  }, {
                      internalType: "bool[]";
                      name: "isChunkUploaded";
                      type: "bool[]";
                  }];
                  internalType: "struct FileStorage.ContentInfo[]";
                  name: "";
                  type: "tuple[]";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "storagePath";
                  type: "string";
              }];
              name: "getFileStatus";
              outputs: readonly [{
                  internalType: "enum FileStorage.FileStatus";
                  name: "";
                  type: "uint8";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "storagePath";
                  type: "string";
              }];
              name: "getFileSize";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "fileSize";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getTotalStorageSpace";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getTotalReservedSpace";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "owner";
                  type: "address";
              }];
              name: "getReservedSpace";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "owner";
                  type: "address";
              }];
              name: "getOccupiedSpace";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getMaxContentCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getMaxChunkSize";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }];
          LINKER: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              constant: true;
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "LINKER_ROLE";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "contractReceiver";
                  type: "address";
              }];
              name: "addSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }, {
                  name: "schainContracts";
                  type: "address[]";
              }];
              name: "connectSchain";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "contractManagerOfSkaleManager";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "disconnectSchain";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "mainnetContract";
                  type: "address";
              }];
              name: "hasMainnetContract";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "hasSchain";
              outputs: readonly [{
                  name: "connected";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "hasSchainContract";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "contractManagerOfSkaleManagerValue";
                  type: "address";
              }, {
                  name: "messageProxyValue";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newContractManagerOfSkaleManager";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }, {
                  name: "sender";
                  type: "address";
              }];
              name: "isAgentAuthorized";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "isNotKilled";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "sender";
                  type: "address";
              }, {
                  name: "schainHash";
                  type: "bytes32";
              }];
              name: "isSchainOwner";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "kill";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "newMainnetContract";
                  type: "address";
              }];
              name: "registerMainnetContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "mainnetContract";
                  type: "address";
              }];
              name: "removeMainnetContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "schainName";
                  type: "string";
              }];
              name: "removeSchainContract";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "role";
                  type: "bytes32";
              }, {
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              payable: false;
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "schainLinks";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "bytes32";
              }];
              name: "statuses";
              outputs: readonly [{
                  name: "";
                  type: "uint8";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }];
          MARIONETTE: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "amount";
                  type: "uint256";
              }];
              name: "EtherReceived";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "receiver";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "amount";
                  type: "uint256";
              }];
              name: "EtherSent";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "bytes";
                  name: "output";
                  type: "bytes";
              }];
              name: "FunctionCallResult";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint8";
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              inputs: readonly [];
              name: "ACCESS_VIOLATION";
              outputs: readonly [{
                  internalType: "string";
                  name: "";
                  type: "string";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "IMA_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "PUPPETEER_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "receiver";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "value";
                  type: "uint256";
              }, {
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "encodeFunctionCall";
              outputs: readonly [{
                  internalType: "bytes";
                  name: "";
                  type: "bytes";
              }];
              stateMutability: "pure";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address payable";
                  name: "target";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "value";
                  type: "uint256";
              }, {
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "execute";
              outputs: readonly [{
                  internalType: "bytes";
                  name: "";
                  type: "bytes";
              }];
              stateMutability: "payable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "uint256";
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "owner";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "ima";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }, {
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address payable";
                  name: "target";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "value";
                  type: "uint256";
              }];
              name: "sendSFuel";
              outputs: readonly [];
              stateMutability: "payable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes4";
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              stateMutability: "payable";
              type: "receive";
          }];
          MULTISIG_WALLET: readonly [{
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              name: "owners";
              outputs: readonly [{
                  name: "";
                  type: "address";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "owner";
                  type: "address";
              }];
              name: "removeOwner";
              outputs: readonly [];
              payable: false;
              stateMutability: "nonpayable";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "revokeConfirmation";
              outputs: readonly [];
              payable: false;
              stateMutability: "nonpayable";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "address";
              }];
              name: "isOwner";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "uint256";
              }, {
                  name: "";
                  type: "address";
              }];
              name: "confirmations";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "calcMaxWithdraw";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "pending";
                  type: "bool";
              }, {
                  name: "executed";
                  type: "bool";
              }];
              name: "getTransactionCount";
              outputs: readonly [{
                  name: "count";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "dailyLimit";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "lastDay";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "owner";
                  type: "address";
              }];
              name: "addOwner";
              outputs: readonly [];
              payable: false;
              stateMutability: "nonpayable";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "isConfirmed";
              outputs: readonly [{
                  name: "";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "getConfirmationCount";
              outputs: readonly [{
                  name: "count";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              name: "transactions";
              outputs: readonly [{
                  name: "destination";
                  type: "address";
              }, {
                  name: "value";
                  type: "uint256";
              }, {
                  name: "data";
                  type: "bytes";
              }, {
                  name: "executed";
                  type: "bool";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "getOwners";
              outputs: readonly [{
                  name: "";
                  type: "address[]";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "from";
                  type: "uint256";
              }, {
                  name: "to";
                  type: "uint256";
              }, {
                  name: "pending";
                  type: "bool";
              }, {
                  name: "executed";
                  type: "bool";
              }];
              name: "getTransactionIds";
              outputs: readonly [{
                  name: "_transactionIds";
                  type: "uint256[]";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [{
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "getConfirmations";
              outputs: readonly [{
                  name: "_confirmations";
                  type: "address[]";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "transactionCount";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "_required";
                  type: "uint256";
              }];
              name: "changeRequirement";
              outputs: readonly [];
              payable: false;
              stateMutability: "nonpayable";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "confirmTransaction";
              outputs: readonly [];
              payable: false;
              stateMutability: "nonpayable";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "destination";
                  type: "address";
              }, {
                  name: "value";
                  type: "uint256";
              }, {
                  name: "data";
                  type: "bytes";
              }];
              name: "submitTransaction";
              outputs: readonly [{
                  name: "transactionId";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "nonpayable";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "_dailyLimit";
                  type: "uint256";
              }];
              name: "changeDailyLimit";
              outputs: readonly [];
              payable: false;
              stateMutability: "nonpayable";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "MAX_OWNER_COUNT";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "required";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "owner";
                  type: "address";
              }, {
                  name: "newOwner";
                  type: "address";
              }];
              name: "replaceOwner";
              outputs: readonly [];
              payable: false;
              stateMutability: "nonpayable";
              type: "function";
          }, {
              constant: false;
              inputs: readonly [{
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "executeTransaction";
              outputs: readonly [];
              payable: false;
              stateMutability: "nonpayable";
              type: "function";
          }, {
              constant: true;
              inputs: readonly [];
              name: "spentToday";
              outputs: readonly [{
                  name: "";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  name: "_owners";
                  type: "address[]";
              }, {
                  name: "_required";
                  type: "uint256";
              }, {
                  name: "_dailyLimit";
                  type: "uint256";
              }];
              payable: false;
              stateMutability: "nonpayable";
              type: "constructor";
          }, {
              payable: true;
              stateMutability: "payable";
              type: "fallback";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "dailyLimit";
                  type: "uint256";
              }];
              name: "DailyLimitChange";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "sender";
                  type: "address";
              }, {
                  indexed: true;
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "Confirmation";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "sender";
                  type: "address";
              }, {
                  indexed: true;
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "Revocation";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "Submission";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "Execution";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "transactionId";
                  type: "uint256";
              }];
              name: "ExecutionFailure";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "sender";
                  type: "address";
              }, {
                  indexed: false;
                  name: "value";
                  type: "uint256";
              }];
              name: "Deposit";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "owner";
                  type: "address";
              }];
              name: "OwnerAddition";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  name: "owner";
                  type: "address";
              }];
              name: "OwnerRemoval";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  name: "required";
                  type: "uint256";
              }];
              name: "RequirementChange";
              type: "event";
          }];
          TOKEN_MANAGER_ERC1155: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "oldValue";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "newValue";
                  type: "address";
              }];
              name: "DepositBoxWasChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc1155OnMainnet";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc1155OnSchain";
                  type: "address";
              }];
              name: "ERC1155TokenAdded";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc1155OnMainnet";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc1155OnSchain";
                  type: "address";
              }];
              name: "ERC1155TokenCreated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256[]";
                  name: "ids";
                  type: "uint256[]";
              }, {
                  indexed: false;
                  internalType: "uint256[]";
                  name: "amounts";
                  type: "uint256[]";
              }];
              name: "ERC1155TokenReady";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc1155OnMainnet";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc1155OnSchain";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256[]";
                  name: "ids";
                  type: "uint256[]";
              }, {
                  indexed: false;
                  internalType: "uint256[]";
                  name: "amounts";
                  type: "uint256[]";
              }];
              name: "ERC1155TokenReceived";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint8";
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              inputs: readonly [];
              name: "AUTOMATIC_DEPLOY_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_HASH";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_NAME";
              outputs: readonly [{
                  internalType: "string";
                  name: "";
                  type: "string";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "TOKEN_REGISTRAR_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "targetChainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "erc1155OnMainnet";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "erc1155OnSchain";
                  type: "address";
              }];
              name: "addERC1155TokenByOwner";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "newTokenManager";
                  type: "address";
              }];
              name: "addTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "contract ERC1155OnChain";
                  name: "";
                  type: "address";
              }];
              name: "addedClones";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "automaticDeploy";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "changeDepositBoxAddress";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "clonesErc1155";
              outputs: readonly [{
                  internalType: "contract ERC1155OnChain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "communityLocker";
              outputs: readonly [{
                  internalType: "contract ICommunityLocker";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "depositBox";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "deprecatedClonesErc1155";
              outputs: readonly [{
                  internalType: "contract ERC1155OnChain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "disableAutomaticDeploy";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "enableAutomaticDeploy";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "id";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "amount";
                  type: "uint256";
              }];
              name: "exitToMainERC1155";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  internalType: "uint256[]";
                  name: "ids";
                  type: "uint256[]";
              }, {
                  internalType: "uint256[]";
                  name: "amounts";
                  type: "uint256[]";
              }];
              name: "exitToMainERC1155Batch";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "uint256";
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "hasTokenManager";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "newChainName";
                  type: "string";
              }, {
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxy";
                  type: "address";
              }, {
                  internalType: "contract ITokenManagerLinker";
                  name: "newIMALinker";
                  type: "address";
              }, {
                  internalType: "contract ICommunityLocker";
                  name: "newCommunityLocker";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "newSchainName";
                  type: "string";
              }, {
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxy";
                  type: "address";
              }, {
                  internalType: "contract ITokenManagerLinker";
                  name: "newIMALinker";
                  type: "address";
              }, {
                  internalType: "contract ICommunityLocker";
                  name: "newCommunityLocker";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "initializeTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  internalType: "contract IMessageProxyForSchain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "operator";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "";
                  type: "address";
              }, {
                  internalType: "uint256[]";
                  name: "";
                  type: "uint256[]";
              }, {
                  internalType: "uint256[]";
                  name: "";
                  type: "uint256[]";
              }, {
                  internalType: "bytes";
                  name: "";
                  type: "bytes";
              }];
              name: "onERC1155BatchReceived";
              outputs: readonly [{
                  internalType: "bytes4";
                  name: "";
                  type: "bytes4";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "operator";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }, {
                  internalType: "bytes";
                  name: "";
                  type: "bytes";
              }];
              name: "onERC1155Received";
              outputs: readonly [{
                  internalType: "bytes4";
                  name: "";
                  type: "bytes4";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "fromChainHash";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }, {
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "removeTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "schainHash";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes4";
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "tokenManagerLinker";
              outputs: readonly [{
                  internalType: "contract ITokenManagerLinker";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              name: "tokenManagers";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "targetSchainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "id";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "amount";
                  type: "uint256";
              }];
              name: "transferToSchainERC1155";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "targetSchainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  internalType: "uint256[]";
                  name: "ids";
                  type: "uint256[]";
              }, {
                  internalType: "uint256[]";
                  name: "amounts";
                  type: "uint256[]";
              }];
              name: "transferToSchainERC1155Batch";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              name: "transferredAmount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }];
          TOKEN_MANAGER_ERC20: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "oldValue";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "newValue";
                  type: "address";
              }];
              name: "DepositBoxWasChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc20OnMainChain";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc20OnSchain";
                  type: "address";
              }];
              name: "ERC20TokenAdded";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc20OnMainChain";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc20OnSchain";
                  type: "address";
              }];
              name: "ERC20TokenCreated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "amount";
                  type: "uint256";
              }];
              name: "ERC20TokenReady";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc20OnMainChain";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc20OnSchain";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "amount";
                  type: "uint256";
              }];
              name: "ERC20TokenReceived";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint8";
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              inputs: readonly [];
              name: "AUTOMATIC_DEPLOY_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_HASH";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_NAME";
              outputs: readonly [{
                  internalType: "string";
                  name: "";
                  type: "string";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "TOKEN_REGISTRAR_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "targetChainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "erc20OnMainChain";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "erc20OnSchain";
                  type: "address";
              }];
              name: "addERC20TokenByOwner";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "newTokenManager";
                  type: "address";
              }];
              name: "addTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "contract ERC20OnChain";
                  name: "";
                  type: "address";
              }];
              name: "addedClones";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "automaticDeploy";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "changeDepositBoxAddress";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "clonesErc20";
              outputs: readonly [{
                  internalType: "contract ERC20OnChain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "communityLocker";
              outputs: readonly [{
                  internalType: "contract ICommunityLocker";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "depositBox";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "deprecatedClonesErc20";
              outputs: readonly [{
                  internalType: "contract ERC20OnChain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "disableAutomaticDeploy";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "enableAutomaticDeploy";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "amount";
                  type: "uint256";
              }];
              name: "exitToMainERC20";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "uint256";
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "hasTokenManager";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "newChainName";
                  type: "string";
              }, {
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxy";
                  type: "address";
              }, {
                  internalType: "contract ITokenManagerLinker";
                  name: "newIMALinker";
                  type: "address";
              }, {
                  internalType: "contract ICommunityLocker";
                  name: "newCommunityLocker";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "newSchainName";
                  type: "string";
              }, {
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxy";
                  type: "address";
              }, {
                  internalType: "contract ITokenManagerLinker";
                  name: "newIMALinker";
                  type: "address";
              }, {
                  internalType: "contract ICommunityLocker";
                  name: "newCommunityLocker";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "initializeTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  internalType: "contract IMessageProxyForSchain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "fromChainHash";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }, {
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "removeTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "schainHash";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes4";
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "tokenManagerLinker";
              outputs: readonly [{
                  internalType: "contract ITokenManagerLinker";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              name: "tokenManagers";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "contract IERC20Upgradeable";
                  name: "";
                  type: "address";
              }];
              name: "totalSupplyOnMainnet";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "targetSchainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "amount";
                  type: "uint256";
              }];
              name: "transferToSchainERC20";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "transferredAmount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }];
          TOKEN_MANAGER_ERC721: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "oldValue";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "newValue";
                  type: "address";
              }];
              name: "DepositBoxWasChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc721OnMainChain";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc721OnSchain";
                  type: "address";
              }];
              name: "ERC721TokenAdded";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc721OnMainChain";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc721OnSchain";
                  type: "address";
              }];
              name: "ERC721TokenCreated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "ERC721TokenReady";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "chainHash";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc721OnMainChain";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "erc721OnSchain";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "ERC721TokenReceived";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint8";
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              inputs: readonly [];
              name: "AUTOMATIC_DEPLOY_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_HASH";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_NAME";
              outputs: readonly [{
                  internalType: "string";
                  name: "";
                  type: "string";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "TOKEN_REGISTRAR_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "targetChainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "erc721OnMainChain";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "erc721OnSchain";
                  type: "address";
              }];
              name: "addERC721TokenByOwner";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "newTokenManager";
                  type: "address";
              }];
              name: "addTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "contract ERC721OnChain";
                  name: "";
                  type: "address";
              }];
              name: "addedClones";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "automaticDeploy";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "changeDepositBoxAddress";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "clonesErc721";
              outputs: readonly [{
                  internalType: "contract ERC721OnChain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "communityLocker";
              outputs: readonly [{
                  internalType: "contract ICommunityLocker";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "depositBox";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              name: "deprecatedClonesErc721";
              outputs: readonly [{
                  internalType: "contract ERC721OnChain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "disableAutomaticDeploy";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "enableAutomaticDeploy";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "exitToMainERC721";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "uint256";
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "hasTokenManager";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "newChainName";
                  type: "string";
              }, {
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxy";
                  type: "address";
              }, {
                  internalType: "contract ITokenManagerLinker";
                  name: "newIMALinker";
                  type: "address";
              }, {
                  internalType: "contract ICommunityLocker";
                  name: "newCommunityLocker";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "newSchainName";
                  type: "string";
              }, {
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxy";
                  type: "address";
              }, {
                  internalType: "contract ITokenManagerLinker";
                  name: "newIMALinker";
                  type: "address";
              }, {
                  internalType: "contract ICommunityLocker";
                  name: "newCommunityLocker";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "initializeTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  internalType: "contract IMessageProxyForSchain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "fromChainHash";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }, {
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "removeTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "schainHash";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes4";
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "tokenManagerLinker";
              outputs: readonly [{
                  internalType: "contract ITokenManagerLinker";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              name: "tokenManagers";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "targetSchainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "contractOnMainnet";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "tokenId";
                  type: "uint256";
              }];
              name: "transferToSchainERC721";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              name: "transferredAmount";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }];
          TOKEN_MANAGER_ETH: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "oldValue";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "newValue";
                  type: "address";
              }];
              name: "DepositBoxWasChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint8";
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              inputs: readonly [];
              name: "AUTOMATIC_DEPLOY_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_HASH";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_NAME";
              outputs: readonly [{
                  internalType: "string";
                  name: "";
                  type: "string";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "TOKEN_REGISTRAR_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }, {
                  internalType: "address";
                  name: "newTokenManager";
                  type: "address";
              }];
              name: "addTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "automaticDeploy";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "changeDepositBoxAddress";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "communityLocker";
              outputs: readonly [{
                  internalType: "contract ICommunityLocker";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "depositBox";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "disableAutomaticDeploy";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "enableAutomaticDeploy";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "ethErc20";
              outputs: readonly [{
                  internalType: "contract IEthErc20";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "amount";
                  type: "uint256";
              }];
              name: "exitToMain";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "uint256";
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "hasTokenManager";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "newChainName";
                  type: "string";
              }, {
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxy";
                  type: "address";
              }, {
                  internalType: "contract ITokenManagerLinker";
                  name: "newIMALinker";
                  type: "address";
              }, {
                  internalType: "contract ICommunityLocker";
                  name: "newCommunityLocker";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }, {
                  internalType: "contract IEthErc20";
                  name: "ethErc20Address";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "newSchainName";
                  type: "string";
              }, {
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxy";
                  type: "address";
              }, {
                  internalType: "contract ITokenManagerLinker";
                  name: "newIMALinker";
                  type: "address";
              }, {
                  internalType: "contract ICommunityLocker";
                  name: "newCommunityLocker";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "newDepositBox";
                  type: "address";
              }];
              name: "initializeTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  internalType: "contract IMessageProxyForSchain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "fromChainHash";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }, {
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "postMessage";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "removeTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "schainHash";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "contract IEthErc20";
                  name: "newEthErc20Address";
                  type: "address";
              }];
              name: "setEthErc20Address";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes4";
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "tokenManagerLinker";
              outputs: readonly [{
                  internalType: "contract ITokenManagerLinker";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              name: "tokenManagers";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }];
          TOKEN_MANAGER_LINKER: readonly [{
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint8";
                  name: "version";
                  type: "uint8";
              }];
              name: "Initialized";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "previousAdminRole";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "bytes32";
                  name: "newAdminRole";
                  type: "bytes32";
              }];
              name: "RoleAdminChanged";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleGranted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "account";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "sender";
                  type: "address";
              }];
              name: "RoleRevoked";
              type: "event";
          }, {
              inputs: readonly [];
              name: "DEFAULT_ADMIN_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_HASH";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAINNET_NAME";
              outputs: readonly [{
                  internalType: "string";
                  name: "";
                  type: "string";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "REGISTRAR_ROLE";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "connectSchain";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "disconnectSchain";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleAdmin";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "uint256";
                  name: "index";
                  type: "uint256";
              }];
              name: "getRoleMember";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }];
              name: "getRoleMemberCount";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "grantRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "hasRole";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "string";
                  name: "schainName";
                  type: "string";
              }];
              name: "hasSchain";
              outputs: readonly [{
                  internalType: "bool";
                  name: "connected";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "tokenManager";
                  type: "address";
              }];
              name: "hasTokenManager";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "contract IMessageProxyForSchain";
                  name: "newMessageProxyAddress";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "linker";
                  type: "address";
              }];
              name: "initialize";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "linkerAddress";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "messageProxy";
              outputs: readonly [{
                  internalType: "contract IMessageProxyForSchain";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "contract ITokenManager";
                  name: "newTokenManager";
                  type: "address";
              }];
              name: "registerTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "contract ITokenManager";
                  name: "tokenManagerAddress";
                  type: "address";
              }];
              name: "removeTokenManager";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "renounceRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "role";
                  type: "bytes32";
              }, {
                  internalType: "address";
                  name: "account";
                  type: "address";
              }];
              name: "revokeRole";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes4";
                  name: "interfaceId";
                  type: "bytes4";
              }];
              name: "supportsInterface";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              name: "tokenManagers";
              outputs: readonly [{
                  internalType: "contract ITokenManager";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }];
      }[`TOKEN_MANAGER_${T}`]>

Generated using TypeDoc